OGR距离单位
我在用Python的OGR库计算一个点到一条线的最短距离。可是,我得到的结果和在QGIS上得到的完全不一样。我在想,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
1 个回答
0
我距离计算不准确的原因是因为我只比较了第一个特征。这个代码的结果和在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)