5

ESRI シェープファイルがあります (ここから: http://pubs.usgs.gov/ds/425/ )。指定された緯度/経度でシェープ ファイル (この場合は地表マテリアル) から情報を検索するために Python を使用しようとしています。

この問題を解決する最善の方法は何ですか?

ありがとう。

最終的解決:

#!/usr/bin/python

from osgeo import ogr, osr

dataset = ogr.Open('./USGS_DS_425_SHAPES/Surficial_materials.shp')
layer = dataset.GetLayerByIndex(0)
layer.ResetReading()

# Location for New Orleans: 29.98 N, -90.25 E
point = ogr.CreateGeometryFromWkt("POINT(-90.25 29.98)")

# Transform the point into the specified coordinate system from WGS84
spatialRef = osr.SpatialReference()
spatialRef.ImportFromEPSG(4326)
coordTransform = osr.CoordinateTransformation(
        spatialRef, layer.GetSpatialRef())

point.Transform(coordTransform)

for feature in layer:
    if feature.GetGeometryRef().Contains(point):
        break

for i in range(feature.GetFieldCount()):
    print feature.GetField(i)
4

3 に答える 3

3

Python シェープファイル ライブラリをチェックアウトする

これにより、ジオメトリとさまざまな情報が得られるはずです。

于 2011-01-04T19:08:05.817 に答える
2

gdal/ogrツールキットへの python バインディングを使用できます。次に例を示します。

from osgeo import ogr

ds = ogr.Open("somelayer.shp")
lyr = ds.GetLayerByName("somelayer")
lyr.ResetReading()

point = ogr.CreateGeometryFromWkt("POINT(4 5)")

for feat in lyr:
    geom = feat.GetGeometryRef()
    if geom.Contains(point):
        sm = feat.GetField(feat.GetFieldIndex("surface_material"))
        # do stuff...
于 2011-01-04T20:08:18.710 に答える