私はESRIシェイプファイルを持っています(ここから:http://pubs.usgs.gov/ds/425/)。私は、指定された緯度/経度でシェイプファイル(この場合は表面的なマテリアル)から情報を検索するためにpythonを使用したいと考えています。ESRIシェイプファイル内の特定の緯度/経度で情報を検索するために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)
ポイントが「フィーチャー」のいずれにも見つからない場合、最後のフィーチャーはマッチとして扱われ(フィールドが印刷されます)。私は別の変数 'matched_feature'を宣言し、' break'の直前にそれを代入し、 'feature'変数の代わりに次のループのために使用します。 –