Làm thế nào tôi có thể chuyển đổi một shapefile sang ranh giới lat và lon?


12

tôi có một shapefile của các phân vùng quốc gia và tôi muốn trích xuất một mảng lat và lon giới hạn cho mỗi phân chia .. điều đó có thể làm được không?


Vui lòng làm rõ: bạn có tệp shapefile hoặc tệp Excel không?
whuber

1
Tiêu đề không thực sự phản ánh câu hỏi của bạn, xin vui lòng suy nghĩ về việc chỉnh sửa nó.
DavidF

tôi có một shapefile
mossplix

Câu trả lời:


25

Sử dụng mô-đun Python ogr từ OSGEO, ví dụ này sẽ cung cấp cho bạn một bộ dữ liệu có chứa các hợp đồng xác định đường bao cho mỗi tính năng.

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
... và con trăn không gian địa lý miễn phí tại đó; /
DavidF

4

Một cách có thể để tiến hành sử dụng SAGA GIS http://www.saga-gis.org Sau khi mở shapefile của bạn, hãy chạy 3 mô-đun này: 1. Mô-đun \ Hình dạng \ Công cụ \ Nhận phạm vi hình dạng

  1. Mô-đun \ Hình dạng \ Công cụ \ Điểm \ Điểm từ các dòng [trái với những gì tên gợi ý bạn cũng có thể sử dụng điều này để lấy điểm từ đa giác]

  2. Mô-đun \ Hình dạng \ Công cụ \ Điểm \ Thêm tọa độ cho điểm Điều này sẽ cung cấp cho bạn một bảng chứa tọa độ x và y của 4 góc của hộp giới hạn của tệp đa giác của bạn.


4

Trong arcgis, đây là mã python. kết quả là một danh sách 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

Đây là phiên bản R, sử dụng dữ liệu mẫu từ gói 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

Tôi sử dụng fiona và tạo hình cho các nhiệm vụ đó:

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

Điều đó KHÔNG cung cấp Lat / Lon.
harvpan

Các đầu ra trông như thế này, đó là các tọa độ lat / lon:
Matej
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.