OGR距离单位
问题描述:
我在Python中使用OGR距离来确定点和线之间的最短距离。我的结果与使用QGIS的结果完全不同。我假设OGR使用的单位取决于坐标系? OGR是否使用学位?如果是的话,我怎么能把它们转换成米? 我的代码如下所示:OGR距离单位
import ogr
driver = ogr.GetDriverByName('ESRI Shapefile')
roads = driver.Open('G:/Basedata/OR/infra/TigerRoads2010/OR_TIGERroads_2010_merge.shp', 0)
point = driver.Open('U:/My Documents/Tool/shp/testareacentro.shp', 0)
roadslayer = roads.GetLayer()
pointl = point.GetLayer()
roadsfeature = roadslayer.GetNextFeature()
pointf = pointl.GetNextFeature()
roadgeom = roadsfeature.GetGeometryRef()
pointgeom = pointf.GetGeometryRef()
dist = pointgeom.Distance(roadgeom)
print dist
答
之所以我的距离是关闭的,是因为我只比第一个特征。 这将代码可以得到同样的结果在QGIS:
import ogr
driver = ogr.GetDriverByName('ESRI Shapefile')
lineshp = driver.Open('U:/My Documents/Tool/shp/line.shp', 0)
linelyr = lineshp.GetLayer()
pointshp = driver.Open('U:/My Documents/Tool/shp/point.shp', 0)
pointlyr = pointshp.GetLayer()
linefeat = linelyr.GetNextFeature()
pointfeat = pointlyr.GetNextFeature()
point_geom = pointfeat.GetGeometryRef()
distlist = []
while linefeat:
line_geom = linefeat.GetGeometryRef()
dist = point_geom.Distance(line_geom)
distlist.append(dist)
linefeat.Destroy()
linefeat = linelyr.GetNextFeature()
print min(distlist)
我期望的单位是输入的单位。 – askewchan 2013-03-06 19:55:58
如何找出输入的单位是什么? – ustroetz 2013-03-06 19:58:37
你必须看看输入来自哪里。如果你给一个点作为元组,这些数字代表什么? – askewchan 2013-03-06 20:01:54