Suite

Ignorer une couche d'entrée spécifiée dans ogr2ogr


J'utilise ogr2ogr pour charger les données de plusieurs fichiers GML dans PostGIS. Comme indiqué dans la sortie ogrinfo ci-dessous, chaque fichier GML a plusieurs couches.

J'ai dû ouvrir la source de données en lecture seule. INFO : Ouverture de 'D:ProjectsosmapsdatavectorMapDistrict_unzippedHP40.gml' à l'aide du pilote 'GML' réussie. 1 : Ornement (Polygone) 2 : SurfaceWater_Line (ligne de chaîne) 3 : TidalWater (polygone) 4 : SpotHeight (point) 5 : TidalBoundary (ligne de chaîne) 6 : FunctionalSite (Point) 7 : SurfaceWater_Area (polygone) 8 : Route (ligne de chaîne) ) 9 : Estran (Polygone) 10 : AdministrativeBoundary (Line String) 11 : NamedPlace (Point) 12 : Building (Polygon)

Je veux charger tous les calques à l'exception du calque Ornement. Comment faire en sorte que ogr2ogr ignore la couche spécifique ?

Mon script actuel dans Windows Powershell :

# Répertoire gml d'entrée $gmlDir = "D:ProjectsosmapsdatavectorMapDistrict_unzipped" # Boucle dans les fichiers gml Foreach($gmlFile in Get-ChildItem $gmlDir -filter *.gml) { #Charger les données ogr2ogr -f PostgreSQL PG : "dbname=osmaps host=localhost port=5432 active_schema=vectormapdistrict user=postgres" -append -progress --config PG_USE_COPY YES $gmlFile.fullname}

Vous ne pouvez pas ignorer les couches mais vous pouvez sélectionner explicitement les couches que vous souhaitez conserver avec la commande ogr2ogr en donnant une liste de couches après la source de données.

Cela devrait fonctionner :

ogr2ogr -f PostgreSQL PG:"dbname=osmaps host=localhost port=5432 active_schema=vectormapdistrict user=postgres" -append -progress --config PG_USE_COPY YES $gmlFile.fullname} SurfaceWater_Line TidalWater SpotHeight TidalBoundary FunctionalSite For AdministrativeWater_Area Road Building

Vous ne pouvez pas ignorer les calques mais vous pouvez sélectionner explicitement les calques que vous souhaitez conserver en écrivant un fichier VRT http://www.gdal.org/drv_vrt.html. Pour vos données, ce fichier ne doit exposer qu'une seule couche de votre GML

  HP40.gml SurfaceWater_Line

Enregistrez sous filtered_gml.xml et testez avecogrinfo filtered_gml.xml. Continuez et ajoutez d'autres éléments OGRVRTLayer.