comment puis-je convertir un fichier de formes en limites lat et lon?
12
j'ai un shapefile de subdivisions de pays et je voudrais extraire un tableau de délimitation lat et lon pour chaque division .. est-il possible de faire?
Veuillez clarifier: avez-vous un fichier de formes ou un fichier Excel ?
whuber
1
Le titre ne reflète pas vraiment votre question, pensez à le modifier.
DavidF
j'ai un shapefile
mossplix
Réponses:
25
En utilisant le module ogr Python d'OSGEO, cet exemple vous donnera un tuple contenant les cordes qui définissent une enveloppe pour chaque fonctionnalité.
from osgeo import ogr
ds = ogr.Open("mn_counties.shp")
lyr = ds.GetLayerByName("mn_counties")
lyr.ResetReading()for feat in lyr:# get bounding coords in minx, maxx, miny, maxy format
env = feat.GetGeometryRef().GetEnvelope()# get bounding coords in minx, miny, maxx, maxy format
bbox =[env[0], env[2], env[1], env[3]]print envprint bboxprint
Une façon possible de continuer à utiliser SAGA GIS http://www.saga-gis.org
Après avoir ouvert votre fichier de formes, exécutez ces 3 modules: 1. Modules \ Shapes \ Tools \ Get Shapes extend
Modules \ Formes \ Outils \ Points \ Points à partir de lignes [contrairement à ce que le nom suggère, vous pouvez également l'utiliser pour obtenir des points à partir d'un polygone]
Modules \ Formes \ Outils \ Points \ Ajouter des coordonnées aux points Cela vous donnera un tableau qui contient les coordonnées x et y des 4 coins de la boîte englobante de votre fichier polygonal.
Voici une version R, utilisant des exemples de données du package rgdal:
library(rgdal)
dsn <- system.file("vectors/ps_cant_31.MIF",package="rgdal")[1]
d <- readOGR(dsn = dsn, layer="ps_cant_31")## transform if this is not longlatif(is.projected(d)) d <- spTransform(d, CRS("+proj=longlat +ellps=WGS84"))for(i in1:nrow(d)){print(bbox(d[i,]))}
J'utilise fiona et bien fait pour ce genre de tâches:
import fionafrom shapely.geometry import shapewith fiona.open(r'd:\Projects\_00_Data\_USstates\fe_2007_us_state00.shp','r')as features:for i, feat in enumerate(features):
geom = shape(feat['geometry'])
name = feat['properties']['NAME00']print','.join((name,)+ tuple([str(i)for i in geom.bounds]))
La sortie ressemble à ceci, ce sont les coordonnées lat / lon: -124.72583900000001,45.544321, -116.915989,49.002494 -82.626182,37.202467, -77.71951899999999,40.638801 -111.056888,40.996345999999996.699.106.699
Réponses:
En utilisant le module ogr Python d'OSGEO, cet exemple vous donnera un tuple contenant les cordes qui définissent une enveloppe pour chaque fonctionnalité.
la source
Une façon possible de continuer à utiliser SAGA GIS http://www.saga-gis.org Après avoir ouvert votre fichier de formes, exécutez ces 3 modules: 1. Modules \ Shapes \ Tools \ Get Shapes extend
Modules \ Formes \ Outils \ Points \ Points à partir de lignes [contrairement à ce que le nom suggère, vous pouvez également l'utiliser pour obtenir des points à partir d'un polygone]
Modules \ Formes \ Outils \ Points \ Ajouter des coordonnées aux points Cela vous donnera un tableau qui contient les coordonnées x et y des 4 coins de la boîte englobante de votre fichier polygonal.
la source
Dans arcgis, voici le code python. le résultat est une liste de minx, miny, maxx, maxy, minM, maxM, minZ, maxZ (
la source
Voici une version R, utilisant des exemples de données du package rgdal:
la source
J'utilise fiona et bien fait pour ce genre de tâches:
la source