saya memiliki shapefile subdivisi negara dan saya ingin mengekstraksi array dari lat dan lon yang terikat untuk setiap divisi .. apakah mungkin untuk dilakukan?
saya memiliki shapefile subdivisi negara dan saya ingin mengekstraksi array dari lat dan lon yang terikat untuk setiap divisi .. apakah mungkin untuk dilakukan?
Jawaban:
Menggunakan modul ogr Python dari OSGEO, contoh ini akan memberi Anda sebuah tuple berisi coords yang menentukan sebuah amplop untuk setiap fitur.
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 env
print bbox
print
Salah satu cara yang mungkin untuk melanjutkan menggunakan SAGA GIS http://www.saga-gis.org Setelah membuka shapefile Anda, jalankan 3 modul ini: 1. Modul \ Bentuk \ Alat \ Dapatkan Bentuk
Modul \ Bentuk \ Alat \ Poin \ Poin dari garis [bertentangan dengan apa yang disarankan oleh namanya, Anda juga dapat menggunakan ini untuk mendapatkan poin dari poligon]
Modul \ Bentuk \ Alat \ Poin \ Tambahkan Koordinat ke poin Ini akan memberi Anda tabel yang berisi koordinat x dan y dari 4 sudut kotak pembatas file poligon Anda.
Di arcgis, ini kode python. hasilnya adalah daftar minx, miny, maxx, maxy, minM, maxM, minZ, maxZ (
import arcpy
for feat in arcpy.SearchCursor(r"c:\data\f.gdb\counties"):
print feat.Shape.extent
-2.66852727251546 49.4265363633626 -2.52848181818121 49.5079454546192 NaN NaN NaN NaN
-10.463336363782 51.4455454544593 -6.01305454583045 55.3799909091533 NaN NaN NaN NaN
-4.77778181827614 54.0555454544593 -4.35347272688468 54.4100000000002 NaN NaN NaN NaN
Ini versi R, menggunakan contoh data dari paket 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 longlat
if (is.projected(d)) d <- spTransform(d, CRS("+proj=longlat +ellps=WGS84"))
for (i in 1:nrow(d)) {
print(bbox(d[i,]))
}
Saya menggunakan fiona dan dibentuk untuk tugas semacam itu:
import fiona
from shapely.geometry import shape
with 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]))