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)
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]]] )
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)
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)
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)
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)
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]])
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]])
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]])
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]])
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)