Answers:
QGIS可以提供帮助。将此答案(WKT部分)检查为一个类似的问题:将税收地图多边形从Shapefile转换为地图编号和角坐标的表格
下面是一种使用Python访问ESRI shapefile纬度和经度坐标以及其他信息位(例如空间参考,字段属性,字段值等)的方法。下面的代码仅适用于多边形和点(因为我还没有写折线的代码)。基本上,我将散布在ArcGIS Desktop帮助9.3周围的一些代码拼凑在一起,添加了一些自己的代码,并将它们组合在一个函数中。它是用ArcGIS 9.3编写的。您应该能够传入多边形shapefile或点shapefile,并且逻辑将相应地对其进行定向。
def get_shapefile( shape_file ):
# Import native arcgisscripting module
import arcgisscripting
# Create the geoprocessor object
gp = arcgisscripting.create(9.3)
# Identify the geometry field
desc = gp.Describe( shape_file )
shapefieldname = desc.ShapeFieldName
# Get shapefile Name
print
print 'Shapefile Name: ', desc.Name
# Get the spatial reference
spatial_reference = desc.SpatialReference.Name
print 'Spatial Reference: ', spatial_reference
print
# Create search cursor
rows = gp.SearchCursor( shape_file )
row = rows.Next()
# Enter while loop for each feature/row
while row:
# Create the geometry object
feat = row.GetValue(shapefieldname)
print '*' * 30
print
print 'Geometry related Information'
print
# Get Geometry Type
geometry_Type = feat.Type
print 'Geometry Type: ', geometry_Type
# Get the area of the feature
geometry_Area = feat.Area
print 'geometry_Area; ', geometry_Area
# Get the centroid for the feature
geometry_Centroid = feat.Centroid
print 'geometry_Centroid:', geometry_Centroid
# Get the extent for the feature
geometry_Extent = feat.Extent
print 'geometry_extent: ', geometry_Extent
print
print 'Get Attribute Table Information'
# Get all the fields for the feature class
fields = desc.Fields
total_number_of_fields = len( fields )
print 'Total number of fields: ', total_number_of_fields
print
print 'List attribute table related information:'
print
field_num_cntr = 0
# Loop through all the fields in the feature class
for field in fields:
print '*'*5, field_num_cntr, '*'*5
print
print 'field Type: ', field.Type
print 'Scale: ', str(field.Scale)
print 'Precision: ', str(field.Precision)
print field.Name, '=> ', row.GetValue( field.Name )
print
field_num_cntr += 1
if geometry_Type == 'polygon':
# Variable to keep track of how many multipart polygons are in
# featureclass
partnum = 0
# Count the number of points in the current multipart feature
partcount = feat.PartCount
print
print 'Number of polygons in feature class: ', partcount
print
# Enter while loop for each part in the feature (if a singlepart feature
# this will occur only once)
while partnum < partcount:
# Print the part number
print "Part ", str(partnum), "of", partcount, ":"
print
part = feat.GetPart(partnum)
pnt = part.Next()
pntcount = 0
# Enter while loop for each vertex
while pnt:
# Print x,y coordinates of current point
print 'X coord:', pnt.x, 'Y coord:', pnt.y
pnt = part.Next()
pntcount += 1
# If pnt is null, either the part is finished or there is an interior ring
if not pnt:
pnt = part.Next()
if pnt:
print "Interior Ring:"
partnum += 1
print
print 'Number of coordinates in feature class: ', pntcount - 1
print
elif geometry_Type == 'point':
feat = row.GetValue(shapefieldname)
# Get coords
pnt = feat.GetPart()
# Print x,y coordinates of current point object
print 'X coord:', pnt.x, 'Y coord:', pnt.y
row = rows.Next()
your_shapefile = 'Path\To\Your\Shapefile.shp'
get_shapefile( your_shapefile )