Ich habe ein ESRI Shapefile (von hier: http://pubs.usgs.gov/ds/425/). Ich suche nach Python, um Informationen aus der Shape-Datei (Surficial-Material in diesem Fall) bei einer gegebenen Länge/Breite zu suchen.Wie verwendet man Python, um Informationen in einem ESRI-Shapefile nach bestimmten Längen- und Breitengraden zu suchen?
Was ist der beste Weg, um dieses Problem zu lösen?
Danke.
Endlösung:
#!/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)
Wenn der Punkt in keinem der 'Features' gefunden wird, werden die letzten Features als Übereinstimmung behandelt (und die Felder werden gedruckt). Ich würde eine separate Variable 'matched_feature' deklarieren und ihr direkt vor dem' break' zuweisen und sie dann für die nächste Schleife anstelle der 'feature' Variablen verwenden. –