首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OGR距离单位

OGR距离单位
EN

Stack Overflow用户
提问于 2013-03-07 03:49:25
回答 1查看 2.1K关注 0票数 0

我正在使用Python中的OGR距离来确定点和线之间的最短距离。我的结果与使用QGIS得到的结果完全不同。我假设OGR使用的单位取决于坐标系?会不会是OGR使用学位?如果是这样,我如何将这些转换为米?我的代码如下所示:

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-08 02:15:16

我距离不远的原因,是因为我只比较了第一个特征。这段代码将给出与QGIS中相同的结果:

代码语言:javascript
复制
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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15256638

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档