Il me semble utiliser le package de site Arcpy d'ESRI pour la quasi-totalité de mes processus de géotraitement python. Au mérite de ESRI, il s'agit d'une incroyable série d'outils qui peuvent aider à accomplir de grandes choses. Toutefois, je souhaite également créer des scripts de géotraitement en dehors du domaine ESRI Arcpy. Par exemple, si je veux couper un raster sur un polygone, je commencerais par le script suivant d' ESRI :
# Import system modules
import arcpy
from arcpy import env
from arcpy.sa import *
# Set environment settings
env.workspace = "C:/sapyexamples/data"
# Set local variables
inRaster = "elevation"
inMaskData = "mask.shp"
# Check out the ArcGIS Spatial Analyst extension license
arcpy.CheckOutExtension("Spatial")
# Execute ExtractByMask
outExtractByMask = ExtractByMask(inRaster, inMaskData)
# Save the output
outExtractByMask.save("C:/sapyexamples/output/extractmask")
Je ne suis pas certain de la manière dont j'accomplirais la même tâche par programmation sans Arcpy. Mes questions pour les programmeurs sérieux: Quelle collection d'outils Python utilisez-vous pour accomplir les tâches que les utilisateurs ESRI accompliraient avec le package de site Arcpy? Par où je commence?
python
geoprocessing
Aaron
la source
la source
Réponses:
GDAL est l'outil à utiliser. En fait, l’appel n’est qu’une ligne pour gdal_rasterize:
si vous connaissiez la valeur non donnée de la dem
Pour certains contrôles python:
où vos variables pourraient être définies en python
Pour le python complet:
Je viens juste de jeter un coup d'œil sur la syntaxe de l'API C, ma syntaxe pour python est donc probablement un peu fausse. Voir gdal_alg.h: http://gdal.org/gdal__alg_8h.html
la source
Vous trouverez sur ce site un certain nombre d'autres questions similaires qui posent la même question de base et qui ont de très bonnes références. Le plus similaire (et détaillé) est:
Parmi les autres:
la source
Un bon point de départ serait la bibliothèque d’abstractions de données géospatiales . Il est en fait composé de deux bibliothèques: GDAL pour manipuler des données raster géospatiales et OGR pour manipuler des données vectorielles géospatiales, mais les gens l'appellent généralement simplement GDAL.
Un cours de géotraitement avec Python utilisant un cours SIG open source est proposé à l'Université d'État d'Utah. Vous voudrez peut-être vérifier, aussi.
la source
Dans beaucoup de mes recherches universitaires, je travaille avec des données LiDAR pour l'analyse de surface pour la géomorphologie. J'ai rapidement constaté que l'exécution de nombreuses opérations à l'aide d'arcpy était très lente, en particulier pour les grands ensembles de données. En conséquence, j'ai commencé à utiliser:
Je recommanderais également le livre Modélisation quantitative des processus de surface de la Terre à tous ceux qui souhaitent en savoir plus sur l'analyse des surfaces matricielles. Le livre contient d'excellents exemples de code en C ++, qui sont bien plus efficaces que les outils ArcGIS. Ces algorithmes peuvent également être portés en Python sans nécessiter quoi que ce soit de plus complexe que numpy, bien qu'ils fonctionnent beaucoup plus rapidement en C ++.
la source
Pour les personnes utilisant ESRI, je pense que GRASS serait un environnement très similaire avec un environnement d'interface graphique en python et organisé dans des "toolkits" distincts pour différentes tâches (trousses à outils vectorielles, vectorielles, solaires, etc.). Le script a d'autres options que Python, mais c'est comme ça que je l'utilise.
Jetez un coup d'œil à ce super lien qui est à jour (je crois): http://grass.osgeo.org/wiki/GRASS_and_Python
EDIT: un autre lien pour ceux qui ont de l'expérience dans ESRI: http://grass.osgeo.org/wiki/GRASS_migration_hints
J'appuie également la motion de GDAL. C'est inestimable et je serais perdu sans cela.
la source
Je pense que les réponses données jusqu'ici couvrent essentiellement tous les paquets qui méritent d'être mentionnés (notamment GDAL, OGR, pyshp, NumPy)
Mais il y a aussi le SIG et le logiciel Python , qui héberge quelques modules intéressants. Elles sont:
Personnellement, j'ai commencé à jouer avec GDAL / OGR récemment et je les ai trouvés très impressionnants en ce qui concerne la rapidité et la couverture des outils d'analyse.
Voici quelques exemples d'utilisation des méthodes (tirées de cette excellente source qui constitue un très bon point de départ):
La bonne chose à propos de ces outils est que vous êtes très flexible dans la façon de les implémenter. J'ai écrit par exemple ma propre classe
CreateGeometry()
pour créer facilement des fichiers vectoriels à partir de rien. Si cela vous intéresse, je peux aussi le poster ici, même si je pense que cela dépasse le cadre de la question.la source
Je sais que votre question est centrée sur Python, mais R possède une multitude de méthodes d’analyse statistique, dont certaines peuvent être utilisées pour l’analyse spatiale.
@Whuber
a une bonne réponse ici illustrant comment attacher un raster à une boîte en deux lignes.la source
Ma solution, la solution rapide, consiste à utiliser GDAL avec Python.
Tu dois
(D'après la réponse ici: rognage du calque avec couche vectorielle à l'aide de GDAL )
Bien sûr, vous devriez pouvoir y parvenir en Python pur, mais je n’ai pas eu besoin de le faire. Et j'ai presque toujours GDAL! La flexibilité de GDAL est fantastique, en particulier dans un environnement Linux. Il gère des énormes rasters, il peut être associé à des scripts Python ou Shell et il existe des fonctions pour beaucoup de choses. Voir aussi OGR pour les outils vectoriels.
la source
Si vous n’êtes pas dérangé par PostGIS, il peut traiter la plupart des données spatiales à votre place.
Cheatsheet PDF:
http://www.postgis.us/downloads/postgis20_cheatsheet.pdf
Il intègre avec python:
https://publicwiki.deltares.nl/display/OET/Accessing+PostgreSQL+PostGIS+with+Python
Avec des outils de support tels que SPIT dans Quantum GIS ou pgAdmin, vous êtes parfaitement équipé pour configurer PostGIS. Vous pouvez ensuite utiliser python pour contrôler les opérations PostGIS sur vos données spatiales.
la source
J'ai travaillé sur une bibliothèque de géotraitement à code source ouvert appelée WhiteboxTools, qui peut être utilisée à la place d'ArcPy dans de nombreuses applications. À l'heure actuelle, près de 300 outils sont disponibles pour le traitement des données raster, vectorielles et LiDAR (LAS), mais il est prévu de porter à terme l'ensemble des 400 outils disponibles dans Whitebox GAT . Bien que les outils soient développés à l'aide du langage de programmation Rust (pour plus d'efficacité), chaque outil peut être appelé à partir de Python, comme dans l'exemple suivant:
Vous trouverez des informations plus détaillées dans le manuel de l'utilisateur WhiteboxTools . La bibliothèque est autonome et n'a pas d'autres dépendances. Vous devez simplement télécharger le petit fichier (<5 Mo) situé ici . Le fichier de téléchargement contient l'exe WhiteboxTools, le script whitebox_tools.py , qui fournit l'API Python de la bibliothèque (importée sur la première ligne du script ci-dessus), ainsi que le manuel d'utilisation. Il existe également une interface graphique tkinter très basique (wb_runner.py) pour l’interfaçage avec la bibliothèque.
La licence permise MIT est destinée à permettre à WhiteboxTools d’être intégré en tant que back-end à d’autres SIG open source; Alexander Bruy a développé un plugin QGIS pour le back-end WhiteboxTools. Vous pouvez également mélanger et faire correspondre les outils de WhiteboxTools et ArcPy dans un seul script, si nécessaire. La bibliothèque est encore quelque peu expérimentale, développée par le groupe de recherche en géomorphométrie et hydrogéomatique de l'Université de Guelph , et est actuellement publiée avant la version 1.0, ce qui devrait être pris en compte dans l'utilisation.
la source
Utilisation de Python pour découper un raster dans un fichier de formes sans ArcPy: http://geospatialpython.com/2011/02/clip-raster-using-shapefile.html
la source