shapefile을 위도 및 경도 경계로 변환하려면 어떻게해야합니까?


12

나는 국가 세분의 shapefile을 가지고 있으며 각 부서에 대한 경계 위도 및 경도 배열을 추출하고 싶습니다 .. 가능합니까?


명확히하십시오 : shapefile 또는 Excel 파일이 있습니까?
whuber

1
제목에 귀하의 질문이 반영되어 있지 않습니다. 편집에 대해 생각해보십시오.
DavidF

shapefile이 있습니다
mossplix

답변:


25

이 예제는 OSGEO의 ogr Python 모듈을 사용하여 각 기능의 봉투를 정의하는 좌표를 포함하는 튜플을 제공합니다.

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
... 그리고 무료 지형 공간 파이썬; /
DavidF

4

SAGA GIS를 사용하여 진행하는 한 가지 방법 http://www.saga-gis.org shapefile을 연 후 다음 3 개의 모듈을 실행하십시오. 1. Modules \ Shapes \ Tools \ Get Shapes extent

  1. 선의 모듈 \ 도형 \ 도구 \ 점 \ 점 [이름에서 제안한 것과 달리이 점을 사용하여 다각형에서 점을 가져올 수도 있음]

  2. 모듈 \ 도형 \ 도구 \ 점 \ 점에 좌표 추가 그러면 다각형 파일의 경계 상자 4 개 모서리에 대한 x 및 y 좌표가 포함 된 테이블이 제공됩니다.


4

arcgis에서 여기 파이썬 코드가 있습니다. 결과는 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

다음은 rgdal 패키지의 예제 데이터를 사용한 R 버전입니다.

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

나는 그런 종류의 작업에 fiona와 매끈한 것을 사용합니다.

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

Lat / Lon은 제공하지 않습니다.
harvpan

출력은 다음과 같습니다. 위도 / 경도 좌표는 다음과 같습니다.
Matej
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.