def test_ogr_factory_6(): src_wkt_list = [ None, 'POINT EMPTY', 'LINESTRING EMPTY', 'POLYGON EMPTY', 'MULTIPOINT EMPTY', 'MULTILINESTRING EMPTY', 'MULTIPOLYGON EMPTY', 'GEOMETRYCOLLECTION EMPTY', 'POINT(0 0)', 'LINESTRING(0 0)', 'POLYGON((0 0))', 'POLYGON(EMPTY,(0 0),EMPTY,(1 1))', 'MULTIPOINT(EMPTY,(0 0),EMPTY,(1 1))', 'MULTILINESTRING(EMPTY,(0 0),EMPTY,(1 1))', 'MULTIPOLYGON(((0 0),EMPTY,(1 1)),EMPTY,((2 2)))', 'GEOMETRYCOLLECTION(POINT EMPTY)', 'GEOMETRYCOLLECTION(LINESTRING EMPTY)', 'GEOMETRYCOLLECTION(POLYGON EMPTY)', 'GEOMETRYCOLLECTION(MULTIPOINT EMPTY)', 'GEOMETRYCOLLECTION(MULTILINESTRING EMPTY)', 'GEOMETRYCOLLECTION(MULTIPOLYGON EMPTY)', 'GEOMETRYCOLLECTION(GEOMETRYCOLLECTION EMPTY)', 'GEOMETRYCOLLECTION(POINT(0 0))', 'GEOMETRYCOLLECTION(LINESTRING(0 0),LINESTRING(1 1))', 'GEOMETRYCOLLECTION(POLYGON((0 0),EMPTY,(2 2)), POLYGON((1 1)))', 'CURVEPOLYGON EMPTY', 'CURVEPOLYGON ((0 0,0 1,1 1,1 0,0 0))', 'CURVEPOLYGON (CIRCULARSTRING(0 0,1 0,0 0))', 'COMPOUNDCURVE EMPTY', 'COMPOUNDCURVE ((0 0,0 1,1 1,1 0,0 0))', 'COMPOUNDCURVE (CIRCULARSTRING(0 0,1 0,0 0))', 'CIRCULARSTRING EMPTY', 'CIRCULARSTRING (0 0,1 0,0 0)', 'MULTISURFACE EMPTY', 'MULTISURFACE (((0 0,0 1,1 1,1 0,0 0)))', 'MULTISURFACE (CURVEPOLYGON((0 0,0 1,1 1,1 0,0 0)))', 'MULTICURVE EMPTY', 'MULTICURVE ((0 0,0 1))', 'MULTICURVE (COMPOUNDCURVE((0 0,0 1)))', 'MULTICURVE (CIRCULARSTRING (0 0,1 0,0 0))', ] for src_wkt in src_wkt_list: if src_wkt is None: src_geom = None else: src_geom = ogr.CreateGeometryFromWkt(src_wkt) ogr.ForceToPolygon(src_geom) ogr.ForceToMultiPolygon(src_geom) ogr.ForceToMultiPoint(src_geom) ogr.ForceToMultiLineString(src_geom) ogr.ForceToLineString(src_geom) for target_type in range(ogr.wkbMultiSurface): gdal.PushErrorHandler('CPLQuietErrorHandler') ogr.ForceTo(src_geom, 1 + target_type) gdal.PopErrorHandler()
def ogr_factory_6(): src_wkt_list = [ None, 'POINT EMPTY', 'LINESTRING EMPTY', 'POLYGON EMPTY', 'MULTIPOINT EMPTY', 'MULTILINESTRING EMPTY', 'MULTIPOLYGON EMPTY', 'GEOMETRYCOLLECTION EMPTY', 'POINT(0 0)', 'LINESTRING(0 0)', 'POLYGON((0 0))', 'POLYGON(EMPTY,(0 0),EMPTY,(1 1))', 'MULTIPOINT(EMPTY,(0 0),EMPTY,(1 1))', 'MULTILINESTRING(EMPTY,(0 0),EMPTY,(1 1))', 'MULTIPOLYGON(((0 0),EMPTY,(1 1)),EMPTY,((2 2)))', 'GEOMETRYCOLLECTION(POINT EMPTY)', 'GEOMETRYCOLLECTION(LINESTRING EMPTY)', 'GEOMETRYCOLLECTION(POLYGON EMPTY)', 'GEOMETRYCOLLECTION(MULTIPOINT EMPTY)', 'GEOMETRYCOLLECTION(MULTILINESTRING EMPTY)', 'GEOMETRYCOLLECTION(MULTIPOLYGON EMPTY)', 'GEOMETRYCOLLECTION(GEOMETRYCOLLECTION EMPTY)', 'GEOMETRYCOLLECTION(POINT(0 0))', 'GEOMETRYCOLLECTION(LINESTRING(0 0),LINESTRING(1 1))', 'GEOMETRYCOLLECTION(POLYGON((0 0),EMPTY,(2 2)), POLYGON((1 1)))', ] for src_wkt in src_wkt_list: if src_wkt is None: src_geom = None else: src_geom = ogr.CreateGeometryFromWkt(src_wkt) dst_geom1 = ogr.ForceToPolygon(src_geom) dst_geom2 = ogr.ForceToMultiPolygon(src_geom) dst_geom3 = ogr.ForceToMultiPoint(src_geom) dst_geom4 = ogr.ForceToMultiLineString(src_geom) dst_geom5 = ogr.ForceToLineString(src_geom) #print(src_geom.ExportToWkt(), dst_geom1.ExportToWkt(), dst_geom2.ExportToWkt(), dst_geom3.ExportToWkt(), dst_geom4.ExportToWkt()) return 'success'
def ogr_factory_7(): src_wkt = 'LINESTRING(2 5,10 20)' exp_wkt = 'LINESTRING(2 5,10 20)' src_geom = ogr.CreateGeometryFromWkt(src_wkt) dst_geom = ogr.ForceToLineString(src_geom) if ogrtest.check_feature_geometry(dst_geom, exp_wkt): print(dst_geom.ExportToWkt()) return 'fail' src_wkt = 'MULTILINESTRING((2 5,10 20))' exp_wkt = 'LINESTRING(2 5,10 20)' src_geom = ogr.CreateGeometryFromWkt(src_wkt) dst_geom = ogr.ForceToLineString(src_geom) if ogrtest.check_feature_geometry(dst_geom, exp_wkt): print(dst_geom.ExportToWkt()) return 'fail' src_wkt = 'MULTILINESTRING((2 5,10 20),(3 4,30 40))' exp_wkt = 'MULTILINESTRING((2 5,10 20),(3 4,30 40))' src_geom = ogr.CreateGeometryFromWkt(src_wkt) dst_geom = ogr.ForceToLineString(src_geom) if ogrtest.check_feature_geometry(dst_geom, exp_wkt): print(dst_geom.ExportToWkt()) return 'fail' src_wkt = 'MULTILINESTRING((2 5,10 20),(10 20,30 40))' exp_wkt = 'LINESTRING (2 5,10 20,30 40)' src_geom = ogr.CreateGeometryFromWkt(src_wkt) dst_geom = ogr.ForceToLineString(src_geom) if ogrtest.check_feature_geometry(dst_geom, exp_wkt): print(dst_geom.ExportToWkt()) return 'fail' src_wkt = 'GEOMETRYCOLLECTION(LINESTRING(2 5,10 20),LINESTRING(10 20,30 40))' exp_wkt = 'LINESTRING (2 5,10 20,30 40)' src_geom = ogr.CreateGeometryFromWkt(src_wkt) dst_geom = ogr.ForceToLineString(src_geom) if ogrtest.check_feature_geometry(dst_geom, exp_wkt): print(dst_geom.ExportToWkt()) return 'fail' src_wkt = 'MULTILINESTRING((2 5,10 20),(10 20))' exp_wkt = 'MULTILINESTRING((2 5,10 20),(10 20))' src_geom = ogr.CreateGeometryFromWkt(src_wkt) dst_geom = ogr.ForceToLineString(src_geom) if ogrtest.check_feature_geometry(dst_geom, exp_wkt): print(dst_geom.ExportToWkt()) return 'fail' src_wkt = 'MULTILINESTRING((2 5,10 20),(10 20,30 40),(30 40,50 60))' exp_wkt = 'LINESTRING (2 5,10 20,30 40,50 60)' src_geom = ogr.CreateGeometryFromWkt(src_wkt) dst_geom = ogr.ForceToLineString(src_geom) if ogrtest.check_feature_geometry(dst_geom, exp_wkt): print(dst_geom.ExportToWkt()) return 'fail' return 'success'
def test_ogr_factory_7(): src_wkt = 'LINESTRING(2 5,10 20)' exp_wkt = 'LINESTRING(2 5,10 20)' src_geom = ogr.CreateGeometryFromWkt(src_wkt) dst_geom = ogr.ForceToLineString(src_geom) assert not ogrtest.check_feature_geometry(dst_geom, exp_wkt), dst_geom.ExportToWkt() src_wkt = 'MULTILINESTRING((2 5,10 20))' exp_wkt = 'LINESTRING(2 5,10 20)' src_geom = ogr.CreateGeometryFromWkt(src_wkt) dst_geom = ogr.ForceToLineString(src_geom) assert not ogrtest.check_feature_geometry(dst_geom, exp_wkt), dst_geom.ExportToWkt() src_wkt = 'MULTICURVE((2 5,10 20))' exp_wkt = 'LINESTRING(2 5,10 20)' src_geom = ogr.CreateGeometryFromWkt(src_wkt) dst_geom = ogr.ForceToLineString(src_geom) assert not ogrtest.check_feature_geometry(dst_geom, exp_wkt), dst_geom.ExportToWkt() src_wkt = 'MULTICURVE(COMPOUNDCURVE((2 5,10 20)))' exp_wkt = 'LINESTRING(2 5,10 20)' src_geom = ogr.CreateGeometryFromWkt(src_wkt) dst_geom = ogr.ForceToLineString(src_geom) assert not ogrtest.check_feature_geometry(dst_geom, exp_wkt), dst_geom.ExportToWkt() src_wkt = 'MULTILINESTRING((2 5,10 20),(3 4,30 40))' exp_wkt = 'MULTILINESTRING((2 5,10 20),(3 4,30 40))' src_geom = ogr.CreateGeometryFromWkt(src_wkt) dst_geom = ogr.ForceToLineString(src_geom) assert not ogrtest.check_feature_geometry(dst_geom, exp_wkt), dst_geom.ExportToWkt() src_wkt = 'MULTILINESTRING((2 5,10 20),(10 20,30 40))' exp_wkt = 'LINESTRING (2 5,10 20,30 40)' src_geom = ogr.CreateGeometryFromWkt(src_wkt) dst_geom = ogr.ForceToLineString(src_geom) assert not ogrtest.check_feature_geometry(dst_geom, exp_wkt), dst_geom.ExportToWkt() src_wkt = 'GEOMETRYCOLLECTION(LINESTRING(2 5,10 20),LINESTRING(10 20,30 40))' exp_wkt = 'LINESTRING (2 5,10 20,30 40)' src_geom = ogr.CreateGeometryFromWkt(src_wkt) dst_geom = ogr.ForceToLineString(src_geom) assert not ogrtest.check_feature_geometry(dst_geom, exp_wkt), dst_geom.ExportToWkt() src_wkt = 'MULTILINESTRING((2 5,10 20),(10 20))' exp_wkt = 'MULTILINESTRING((2 5,10 20),(10 20))' src_geom = ogr.CreateGeometryFromWkt(src_wkt) dst_geom = ogr.ForceToLineString(src_geom) assert not ogrtest.check_feature_geometry(dst_geom, exp_wkt), dst_geom.ExportToWkt() src_wkt = 'MULTILINESTRING((2 5,10 20),(10 20,30 40),(30 40,50 60))' exp_wkt = 'LINESTRING (2 5,10 20,30 40,50 60)' src_geom = ogr.CreateGeometryFromWkt(src_wkt) dst_geom = ogr.ForceToLineString(src_geom) assert not ogrtest.check_feature_geometry(dst_geom, exp_wkt), dst_geom.ExportToWkt() src_wkt = 'POLYGON ((0 0,0 1,1 1,1 0,0 0))' exp_wkt = 'LINESTRING (0 0,0 1,1 1,1 0,0 0)' src_geom = ogr.CreateGeometryFromWkt(src_wkt) dst_geom = ogr.ForceToLineString(src_geom) assert not ogrtest.check_feature_geometry(dst_geom, exp_wkt), dst_geom.ExportToWkt() src_wkt = 'CURVEPOLYGON ((0 0,0 1,1 1,1 0,0 0))' exp_wkt = 'LINESTRING (0 0,0 1,1 1,1 0,0 0)' src_geom = ogr.CreateGeometryFromWkt(src_wkt) dst_geom = ogr.ForceToLineString(src_geom) assert not ogrtest.check_feature_geometry(dst_geom, exp_wkt), dst_geom.ExportToWkt() src_wkt = 'CURVEPOLYGON (COMPOUNDCURVE((0 0,0 1,1 1,1 0,0 0)))' exp_wkt = 'LINESTRING (0 0,0 1,1 1,1 0,0 0)' src_geom = ogr.CreateGeometryFromWkt(src_wkt) dst_geom = ogr.ForceToLineString(src_geom) assert not ogrtest.check_feature_geometry(dst_geom, exp_wkt), dst_geom.ExportToWkt()
def openGeoJson(self, check_field, filename): driver = ogr.GetDriverByName("GeoJSON") dataSource = driver.Open(filename, 0) layer = dataSource.GetLayer() wfs_result = dict() for feat in layer: #create geometry object geom = feat.GetGeometryRef() if geom is not None: sr = osr.SpatialReference() sr.ImportFromEPSG(3857) geom_type = geom.GetGeometryType() #say to Dima if self.ForceToMultiGeom: if geom_type == ogr.wkbLineString: mercator_geom = ogr.ForceToLineString(geom) elif geom_type == ogr.wkbPolygon: mercator_geom = ogr.ForceToPolygon(geom) elif geom_type == ogr.wkbPoint: mercator_geom = ogr.ForceToMultiPoint(geom) elif geom_type == ogr.wkbMultiPolygon: mercator_geom = ogr.ForceToMultiPolygon(geom) elif geom_type == ogr.wkbMultiPoint: mercator_geom = ogr.ForceToMultiPoint(geom) elif geom_type == ogr.wkbMultiLineString: mercator_geom = ogr.ForceToMultiPolygon(geom) else: mercator_geom = geom else: mercator_geom = geom else: continue #Read broker fields feat_defn = layer.GetLayerDefn() wfs_fields = dict() for i in range(feat_defn.GetFieldCount()): field_defn = feat_defn.GetFieldDefn(i) #if field_defn.GetName() == 'gml_id': # continue #Compare by one control field if field_defn.GetName() == check_field: check_field_val = feat.GetFieldAsString(i).decode( 'utf-8') #GetFieldAsInteger64(i) #Read fields if field_defn.GetType( ) == ogr.OFTInteger: #or field_defn.GetType() == ogr.OFTInteger64: wfs_fields[field_defn.GetName()] = feat.GetFieldAsInteger( i) #GetFieldAsInteger64(i) # print "%s = %d" % (field_defn.GetName(), feat.GetFieldAsInteger64(i)) elif field_defn.GetType() == ogr.OFTReal: wfs_fields[field_defn.GetName()] = feat.GetFieldAsDouble(i) # print "%s = %.3f" % (field_defn.GetName(), feat.GetFieldAsDouble(i)) elif field_defn.GetType() == ogr.OFTString: # print "%s = %s" % (field_defn.GetName(), feat.GetFieldAsString(i)) wfs_fields[field_defn.GetName()] = feat.GetFieldAsString( i).decode('utf-8') else: # print "%s = %s" % (field_defn.GetName(), feat.GetFieldAsString(i)) wfs_fields[field_defn.GetName()] = feat.GetFieldAsString( i).decode('utf-8') #Object with keys - as values of one control field wfs_result[check_field_val] = dict() wfs_result[check_field_val]['id'] = check_field_val wfs_result[check_field_val]['fields'] = wfs_fields wfs_result[check_field_val]['geom'] = mercator_geom.Clone() layer_result_sorted = dict() for key in sorted(wfs_result): layer_result_sorted[key] = wfs_result[key] return layer_result_sorted