コード例 #1
0
    def test_nybb_fast_split(self):
        nybb_path = geopandas.datasets.get_path("nybb")
        data = geopandas.read_file(nybb_path)
        data.set_index("BoroCode", inplace=True)

        topo = topojson.cut(topojson.join(topojson.extract(data)))
        self.assertEqual(topo["bookkeeping_linestrings"].size, 5618)
コード例 #2
0
 def test_hashmap_geomcol_multipolygon_polygon(self):
     data = {
         "foo": {
             "type": "GeometryCollection",
             "geometries": [
                 {
                     "type": "MultiPolygon",
                     "coordinates": [
                         [
                             [[10, 20], [20, 0], [0, 0], [10, 20]],
                             [[3, 2], [10, 16], [17, 2], [3, 2]],
                         ],
                         [[[6, 4], [14, 4], [10, 12], [6, 4]]],
                     ],
                 },
                 {
                     "type": "Polygon",
                     "coordinates": [[[20, 0], [35, 5], [10, 20], [20, 0]]],
                 },
             ],
         }
     }
     topo = topojson.hashmap(
         topojson.dedup(topojson.cut(topojson.join(topojson.extract(data))))
     )
     # print(topo)
     self.assertEqual(
         topo["objects"]["data"]["geometries"][0]["arcs"], [[[4, 0]], [[1]], [[2]]]
     )
コード例 #3
0
 def test_albania_greece(self):
     data = geopandas.read_file(geopandas.datasets.get_path("naturalearth_lowres"))
     data = data[(data.name == "Albania") | (data.name == "Greece")]
     topo = topojson.hashmap(
         topojson.dedup(topojson.cut(topojson.join(topojson.extract(data))))
     )
     self.assertEqual(len(topo["arcs"]), 3)
コード例 #4
0
 def test_benin_surrounding_countries(self):
     data = geopandas.read_file(geopandas.datasets.get_path("naturalearth_lowres"))
     data = data[
         (data.name == "Togo")
         | (data.name == "Benin")
         | (data.name == "Burkina Faso")
     ]
     topo = topojson.hashmap(
         topojson.dedup(topojson.cut(topojson.join(topojson.extract(data))))
     )
     self.assertEqual(len(topo["arcs"]), 6)
コード例 #5
0
 def test_shared_arcs_ordering_issues(self):
     data = geopandas.read_file(geopandas.datasets.get_path("naturalearth_lowres"))
     data = data[
         (data.name == "Botswana")
         | (data.name == "South Africa")
         | (data.name == "Zimbabwe")
         | (data.name == "Mozambique")
         | (data.name == "Zambia")
     ]
     topo = topojson.hashmap(
         topojson.dedup(topojson.cut(topojson.join(topojson.extract(data))))
     )
     self.assertEqual(len(topo["arcs"]), 18)
コード例 #6
0
 def test_geom_surrounding_many_geometries(self):
     data = geopandas.read_file(geopandas.datasets.get_path("naturalearth_lowres"))
     data = data[
         (data.name == "Botswana")
         | (data.name == "South Africa")
         | (data.name == "Zimbabwe")
         | (data.name == "Namibia")
         | (data.name == "Zambia")
     ]
     topo = topojson.hashmap(
         topojson.dedup(topojson.cut(topojson.join(topojson.extract(data))))
     )
     self.assertEqual(len(topo["arcs"]), 14)
コード例 #7
0
 def test_hashmap_backward_polygon(self):
     data = {
         "abc": {
             "type": "Polygon",
             "coordinates": [[[0, 0], [1, 0], [1, 1], [0, 1], [0, 0]]],
         },
         "def": {
             "type": "Polygon",
             "coordinates": [[[1, 0], [2, 0], [2, 1], [1, 1], [1, 0]]],
         },
     }
     topo = topojson.hashmap(
         topojson.dedup(topojson.cut(topojson.join(topojson.extract(data))))
     )
     self.assertEqual(topo["objects"]["data"]["geometries"][0]["arcs"], [[-3, 0]])
     self.assertEqual(topo["objects"]["data"]["geometries"][1]["arcs"], [[1, 2]])
コード例 #8
0
 def test_ring_ABCA_line_ABCA_no_cuts(self):
     data = {
         "abcaLine": {
             "type": "Linestring",
             "coordinates": [[0, 0], [1, 0], [2, 1], [0, 0]],
         },
         "abcaPolygon": {
             "type": "Polygon",
             "coordinates": [[[0, 0], [1, 0], [2, 1], [0, 0]]],
         },
     }
     topo = topojson.cut(topojson.join(topojson.extract(data)))
     # print(topo)
     self.assertEqual(len(topo["junctions"]), 0)
     self.assertSequenceEqual(topo["bookkeeping_duplicates"].tolist(),
                              [[1, 0]])
コード例 #9
0
 def test_exact_duplicate_lines_ABC_ABC_no_cuts(self):
     data = {
         "abc": {
             "type": "LineString",
             "coordinates": [[0, 0], [1, 0], [2, 0]]
         },
         "abc2": {
             "type": "LineString",
             "coordinates": [[0, 0], [1, 0], [2, 0]]
         },
     }
     topo = topojson.cut(topojson.join(topojson.extract(data)))
     # print(topo)
     self.assertEqual(len(topo["junctions"]), 0)
     self.assertSequenceEqual(topo["bookkeeping_duplicates"].tolist(),
                              [[1, 0]])
コード例 #10
0
 def test_overlapping_rings_are_cut(self):
     data = {
         "abcda": {
             "type": "Polygon",
             "coordinates": [[[0, 0], [1, 0], [1, 1], [0, 1], [0, 0]]],
         },  # rotated to BCDAB, cut BC-CDAB
         "befcb": {
             "type": "Polygon",
             "coordinates": [[[1, 0], [2, 0], [2, 1], [1, 1], [1, 0]]],
         },
     }
     topo = topojson.cut(topojson.join(topojson.extract(data)))
     # print(topo)
     self.assertEqual(topo["bookkeeping_linestrings"].size, 6)
     self.assertSequenceEqual(topo["bookkeeping_duplicates"].tolist(),
                              [[4, 1]])
コード例 #11
0
 def test_to_cut_border_egypt_sudan(self):
     data = geopandas.read_file(
         geopandas.datasets.get_path("naturalearth_lowres"))
     data = data[(data.name == "Egypt") | (data.name == "Sudan")]
     topo = topojson.cut(topojson.join(topojson.extract(data)))
     self.assertEqual(len(topo["bookkeeping_duplicates"].tolist()), 0)