def test_strahler(self): self.assertModule( "v.stream.order", input="stream_network", points="stream_network_outlets", output="stream_network_order_test_strahler", threshold=25, order=["strahler"], overwrite=True, verbose=True, ) # Check the strahler value v = VectorTopo(name="stream_network_order_test_strahler", mapset="") v.open(mode="r") self.assertTrue(v.exist(), True) self.assertEqual(v.num_primitive_of("line"), 101) # feature 4 self.assertEqual(v.read(4).attrs.cat, 41) self.assertEqual(v.read(4).attrs["outlet_cat"], 1) self.assertEqual(v.read(4).attrs["network"], 1) self.assertEqual(v.read(4).attrs["reversed"], 0) self.assertEqual(v.read(4).attrs["strahler"], 4) v.close()
def feat_count(shp, gisApi='pandas'): """ Count the number of features in a feature class API'S Available: * gdal; * arcpy; * pygrass; * pandas; """ if gisApi == 'ogr': from osgeo import ogr from gasp.prop.ff import drv_name data = ogr.GetDriverByName(drv_name(shp)).Open(shp, 0) lyr = data.GetLayer() fcnt = int(lyr.GetFeatureCount()) data.Destroy() elif gisApi == 'arcpy': import arcpy fcnt = int(arcpy.GetCount_management(lyr).getOutput(0)) elif gisApi == 'pygrass': from grass.pygrass.vector import VectorTopo open_shp = VectorTopo(shp) open_shp.open(mode='r') fcnt = open_shp.num_primitive_of(geom) elif gisApi == 'pandas': from gasp.fm import tbl_to_obj gdf = tbl_to_obj(shp) fcnt = int(gdf.shape[0]) del gdf else: raise ValueError('The api {} is not available'.format(gisApi)) return fcnt
def test_all(self): self.assertModule( "v.stream.order", input="stream_network", points="stream_network_outlets", output="stream_network_order_test_all", threshold=25, order=["strahler", "shreve", "drwal", "scheidegger"], overwrite=True, verbose=True, ) # Check all values v = VectorTopo(name="stream_network_order_test_all", mapset="") v.open(mode="r") self.assertTrue(v.exist(), True) self.assertEqual(v.num_primitive_of("line"), 101) # feature 4 self.assertEqual(v.read(4).attrs.cat, 41) self.assertEqual(v.read(4).attrs["outlet_cat"], 1) self.assertEqual(v.read(4).attrs["network"], 1) self.assertEqual(v.read(4).attrs["reversed"], 0) self.assertEqual(v.read(4).attrs["strahler"], 4) self.assertEqual(v.read(4).attrs["shreve"], 32) self.assertEqual(v.read(4).attrs["drwal"], 6) self.assertEqual(v.read(4).attrs["scheidegger"], 64) v.close() # Check for column copy self.assertModule( "v.stream.order", input="stream_network_order_test_all", points="stream_network_outlets", output="stream_network_order_test_all_2", threshold=25, order=["strahler", "shreve", "drwal", "scheidegger"], columns=["strahler", "shreve", "drwal", "scheidegger"], overwrite=True, verbose=True, ) # Check all values and their copies v = VectorTopo(name="stream_network_order_test_all_2", mapset="") v.open(mode="r") self.assertTrue(v.exist(), True) self.assertEqual(v.num_primitive_of("line"), 101) # feature 4 self.assertEqual(v.read(4).attrs.cat, 4) self.assertEqual(v.read(4).attrs["outlet_cat"], 1) self.assertEqual(v.read(4).attrs["network"], 1) self.assertEqual(v.read(4).attrs["reversed"], 0) self.assertEqual(v.read(4).attrs["strahler"], 4) self.assertEqual(v.read(4).attrs["shreve"], 32) self.assertEqual(v.read(4).attrs["drwal"], 6) self.assertEqual(v.read(4).attrs["scheidegger"], 64) self.assertEqual(v.read(4).attrs["strahler_1"], 4) self.assertEqual(v.read(4).attrs["shreve_1"], 32) self.assertEqual(v.read(4).attrs["drwal_1"], 6) self.assertEqual(v.read(4).attrs["scheidegger_1"], 64) # feature 7 self.assertEqual(v.read(7).attrs.cat, 7) self.assertEqual(v.read(7).attrs["outlet_cat"], 1) self.assertEqual(v.read(7).attrs["network"], 1) self.assertEqual(v.read(7).attrs["reversed"], 0) self.assertEqual(v.read(7).attrs["strahler"], 2) self.assertEqual(v.read(7).attrs["strahler_1"], 2) self.assertEqual(v.read(7).attrs["shreve"], 4) self.assertEqual(v.read(7).attrs["drwal"], 3) self.assertEqual(v.read(7).attrs["scheidegger"], 8) v.close()