Viac

Ogr Python API: nastavte nulové hodnoty vo funkcii


Pokúšam sa prevádzať geodáta OGR z jedného ovládača na druhý, ako to robí nástroj príkazového riadka ogr2ogr, ale pomocou rozhrania python API. Môj problém je v tom, že hodnoty NULL vo vstupných údajoch sú konvertované ako reťazec „Žiadne“ vo výstupných údajoch.

Metóda Ogr SetField:

output_feature.SetField ('linetype', None)

nenastaví atribút 'linetype' = None (alebo null) vo výstupnej funkcii, ako sa očakávalo, ale "None" ako reťazec. Testoval som to s ovládačom PostgreSQL a GeoJson, ale pravdepodobne to ovplyvnilo všetky ovládače.

Kompletná ukážka kódu odtiaľto:

outDriver = ogr.GetDriverByName ("GeoJson") outDataSource = outDriver.CreateDataSource ('test.geojson') outLayer = outDataSource.CreateLayer ("test_layer") # Pridajte pole s názvom idField = ogr.FieldDefn ("name", ogr. ) outLayer.CreateField (idField) bod = ogr.Geometry (ogr.wkbPoint) bod.AddPoint (1198054.34, 648493.09) # Vytvorte funkciu a nastavte hodnoty featureDefn = outLayer.GetLayerDefn () #feature 1 feature_1 = ogr.Feature (featureD) feature_1.SetGeometry (point) feature_1.SetField ("name", 'name_1') outLayer.CreateFeature (feature_1) #feature 2, name attribute should be NULL but but saved as "None" (string) feature_2 = ogr.Feature (featureDefn ) feature_2.SetGeometry (point) feature_2.SetField ("name", None) outLayer.CreateFeature (feature_2) # Close DataSource outDataSource.Destroy ()

Mal som ten isty problem. Moje riešenie bolo pred použitím metódy SetField () otestovať, či je hodnota Žiadna. Tým sa zabráni tomu, aby sa hodnota nastavovala a deaktivovala tam a späť.

field_value = in_feature.GetField (self.fields_name [x]) if not field_value == None: out_feature.SetField (self.fields_name [x], in_feature.GetField (self.fields_name [x]))