シェープファイルを緯度と経度の境界に変換するにはどうすればよいですか?


12

国の下位区分のシェープファイルがあり、各区分の境界の緯度と経度の配列を抽出したいのですが、それは可能ですか?


明確にしてください:シェープファイルまたはExcelファイルはありますか?
whuber

1
タイトルは実際にはあなたの質問を反映していないので、編集を検討してください。
DavidF

私はシェープファイルを持っています
-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を使用して続行する1つの可能な方法は 、シェープファイルを開いた後、次の3つのモジュールを実行します。1. Modules \ Shapes \ Tools \ Get Shapes extent

  1. Modules \ Shapes \ Tools \ Points \ Points from lines [名前から、これを使用してポリゴンからポイントを取得することもできます]

  2. Modules \ Shapes \ Tools \ Points \ Add Coordinates to pointsこれにより、ポリゴンファイルの境界ボックスの4隅のx座標とy座標を含むテーブルが表示されます。


4

arcgisでは、ここにPythonコードがあります。結果は、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

私はフィオナを使用し、その種のタスクにきちんと使用します。

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

出力は次のようになります。これらは緯度/経度座標です:-124.72583900000001,45.544321、-116.915989,49.002494 -82.626182,37.202467、-77.71951899999999,40.638801 -111.056888,40.996345999999996、-104.052287,45.005904 -67.955811,17.913769、-65.51156799999999
マテイ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.