bagaimana saya bisa mengubah shapefile ke batas lat dan lon?

12

saya memiliki shapefile subdivisi negara dan saya ingin mengekstraksi array dari lat dan lon yang terikat untuk setiap divisi .. apakah mungkin untuk dilakukan?

lumut
sumber
Tolong jelaskan: apakah Anda memiliki file shapefile atau Excel ?
Whuber
1
Judul tidak benar-benar mencerminkan pertanyaan Anda, harap pikirkan tentang pengeditannya.
DavidF
saya punya shapefile
mossplix

Jawaban:

25

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
DavidF
sumber
2
... dan python geospasial gratis pada saat itu; /
DavidF
4

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

  1. Modul \ Bentuk \ Alat \ Poin \ Poin dari garis [bertentangan dengan apa yang disarankan oleh namanya, Anda juga dapat menggunakan ini untuk mendapatkan poin dari poligon]

  2. 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.

johanvdw
sumber
4

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
Gotchula
sumber
4

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,]))    
}
mdsumner
sumber
1

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]))
Matej
sumber
Itu TIDAK menyediakan Lat / Lon.
harvpan
Outputnya terlihat seperti ini, yaitu koordinat lat / lon: -124.72583900000001,45.544321, -116.915989,49.002494 -82.626182,37.202467, -77.71951899999999999, -Umumnya-produk-sebaginya-memiliki-memilikiprodukuntukmemilikiprodukuntukmemilikiprodukuntukmemilikiprodukyangdimasukkandimulai-denganpeluang-peluang-kuat-kekuatan-kekuatan-saat-sebuahanda-dengan-satu-satu-pilihan-satu-pilihan-satu-pilihan-lebihbaik-memiliki-denganlebihbaik-kekuatan-lebihdaripada-adalahmembuat-lebihdaripada-memiliki-kekuatan-memiliki-kekuatanmemilikimemilikiprodukuntukmemiliki lebih banyakproduk—memiliki—————————————————Memilih-memiliki selulebihnya?
Matej