Je voudrais convertir certains fichiers shp basés sur des polygones qui ont plusieurs entités polygonales en points pour chaque entité qui représenteraient essentiellement le centriode de chaque entité polygonale. Je sais que dans le monde ArcGIS, je pourrais utiliser l'outil Feature To Point, mais je voudrais le conserver dans un script qui pourrait être exécuté sur des PC sans arcpy, donc je cherche une alternative open source à cela. Quelqu'un est-il au courant d'une bibliothèque que je pourrais utiliser pour cela, ainsi que des instructions sur la façon de l'utiliser pour y parvenir?
9
Réponses:
Vous pouvez exécuter une
ogr2ogr
commande (par exemple à partir d'un shell OSGeo4w). Par exemple sur un fichier de formes de pays:Le nouveau fichier de formes
countries_centroid.shp
doit être similaire à l'entrée, mais contenir juste un point par [Multi] Polygone.@PEL montre également un bon exemple avec ST_PointOnSurface, qui est simple à remplacer dans cette commande.
Quelque chose de similaire peut être fait en Python, si nécessaire, mais cela peut prendre quelques lignes de code de plus:
la source
gdal-bin
inclure ce support.Utilisez simplement Fiona ou GeoPandas (Python 2.7.x et 3.x)
Quelques polygones
Transformation en points (centroïdes)
Résultat
la source
Une autre façon, peut-être plus «bas niveau», serait d'utiliser directement
fiona
etshapely
pour le traitement des E / S et de la géométrie.la source
Je pense que la façon la plus simple est d'utiliser le format virtuel gdal / ogr. ( http://www.gdal.org/drv_vrt.html ) et dialecte SQL / SQLITE ( http://www.gdal.org/ogr_sql.html et https://www.gaia-gis.it/spatialite-3.0 .0-BETA / spatialite-sql-3.0.0.html )
Mon fichier de formes polygonales s'appelle poly.shp. Ensuite, je crée ce fichier XML appelé vrt.vrt. A l'intérieur de ce fichier (vrt.vrt), voici le contenu à convertir en points
À ce stade, vous pouvez intégrer ce fichier dans Qgis pour le valider. Bien sûr, le rendu est plus lent que la source brute car chaque entité est castée en tant que point sur chaque requête de rendu.
Ensuite, convertissez ce fichier (vrt.vrt) en quelque chose d'autre en utilisant les utilitaires gdal / ogr à partir d'un shell / script python
Vous obtenez un fichier de formes de points nommé point_from_vrt.shp.
la source
'wkbPoints' is not a valid value of the atomic type