Suite

Est-ce que ogr2ogr « reverse clip » (ou « clip out » ou « effacer » ou « différence ») un fichier de formes d'un autre ?


Y a-t-il un moyen dansogr2ogrpour "découper" un shapefile d'un autre ?

je connaisogr2ogr -clipsrc B.shp out.shp A.shpsupprimera toute partie deA.shpce n'est PAS dansB.shp.

Existe-t-il une commande ogr2ogr pour supprimer une partie deA.shpqui croiseB.shp?

J'ai vu cela appelé "clip inversé", "clip out", "effacer" (ArcMap) ou "différence".

Noter: cette question concerneogr2ogr, l'outil de ligne de commande, PAS la bibliothèque OGR, qui nécessite une programmation.


Essaye ça,

ogr2ogr -f "ESRI Shapefile" out.shp road.shp -dialect sqlite -sql " select ST_Diffrence(road.geometry, seg_buff.geometry) from road, 'seg_buff.shp'.seg_buff seg_buff "

Mettre un extraseg_buffà la fin fait fonctionner la requête.

Ce mot supplémentaire est nécessaire carogr2ogrne génère automatiquement que les noms de table SQL pour les fichiers qui lui sont transmis directement. Lorsque vous spécifiez un fichier supplémentaire à partir de l'instruction SQL, vous devez fournir un nom de table arbitraire1 pour y faire référence ailleurs dans l'instruction SQL. Dans ce cas:

Le fichier de formes | La table dans le shapefile | | Le nom que nous allons utiliser pour désigner le | | table ailleurs dans l'instruction SQL | | | ------------ -------- -------- 'seg_buff.shp'.seg_buff seg_buff

1 Le nom de table fourni ne doit pas nécessairement correspondre au nom de fichier (ou à sa table contenue). Par exemple, les éléments suivants fonctionnent également :

ogr2ogr -f "ESRI Shapefile" out.shp road.shp -dialect sqlite -sql " select ST_Diffrence(road.geometry, foo.geometry) de la route, 'seg_buff.shp'.seg_buff foo "

Dans l'un ou l'autre exemple,out.shpcontiendra uniquement les parties deroute.shpqui ne sont pas contenus dansseg_buff.shp.


Utilisation de GDAL >= 1.10.0 compilé avec SQLite et SpatiaLite :

ogr2ogr difference.shp a.shp -dialect SQLite -sql "SELECT ST_Difference(a.geometry, b.geometry) AS géométrie FROM a, 'b.shp'.b"

Essayez d'utiliser cette commande :

ogr2ogr -clipsrc B.shp out.shp A.shp -clipsrclayer B