Daha çox

Ogr Python API: xüsusiyyətdə sıfır dəyərləri təyin edin

Ogr Python API: xüsusiyyətdə sıfır dəyərləri təyin edin


OGR geodatasını ogr2ogr əmr satırı vasitəsi kimi bir sürücüdən digərinə çevirməyə çalışıram, ancaq python API -dən istifadə edirəm. Mənim problemim odur ki, giriş məlumatlarındakı NULL dəyərləri çıxış məlumatlarında "Heç biri" sətri kimi çevrilir.

Ogr SetField metodu:

output_feature.SetField ('xətti tip', Heç biri)

"linetype" = None (və ya null) atributunu, gözlənildiyi kimi deyil, "None" simli olaraq təyin etmir. Bunu PostgreSQL və GeoJson sürücüsü ilə sınadım, amma ehtimal ki, bütün sürücülərə təsir etdi.

Kod nümunəsini buradan tamamlayın:

outDriver = ogr.GetDriverByName ("GeoJson") outDataSource = outDriver.CreateDataSource ('test.geojson') outLayer = outDataSource.CreateLayer ("test_layer") # Ad alan əlavə edin idField = ogr.FieldDefn ("adı", ogr. ) outLayer.CreateField (idField) point = ogr.Geometry (ogr.wkbPoint) point.AddPoint (1198054.34, 648493.09) # Xüsusiyyət yaradın və dəyərlər xüsusiyyətini təyin edinDefn = outLayer.GetLayerDefn () #feature 1 xüsusiyyət_1 = ogr.Feature (xüsusiyyət) feature_1.SetGeometry (point) xüsusiyyət_1.SetField ("name", 'name_1') outLayer.CreateFeature (feature_1) #feature 2, name attribute NULL olmalıdır, lakin "None" (string) xüsusiyyət_2 = ogr.Feature (featureDefn) olaraq qeyd olunur ) xüsusiyyət_2.SetGeometry (nöqtə) xüsusiyyət_2.SetField ("ad", Heç biri) outLayer.CreateFeature (xüsusiyyət_2) # DataSource'u bağlayın outDataSource.Destroy ()

Eyni problemim var idi. Mənim həllim SetField () metodundan istifadə etməzdən əvvəl dəyərin yox olub olmadığını yoxlamaq idi. Bu, dəyəri təyin etmək və geri qaytarmaqdan çəkinir.

field_value = in_feature.GetField (self.fields_name [x]) deyilsə field_value == Heç biri: out_feature.SetField (self.fields_name [x], in_feature.GetField (self.fields_name [x]))