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?


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

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.


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

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

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]))

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.