我在地理信息系统里有一个多边形集,里面有很多多边形。我的任务是找出两个多边形之间的最大距离[两个多边形是最远的/最远的,我的英语很有趣:(]
到目前为止,这是我的代码,但是我停止了,因为输出给我的最大值不正确。请帮忙。这是我的代码:
# -*- coding: utf-8 -*-
from shapely.wkb import loads
from osgeo import ogr
datoteka=ogr.Open("sth.shp")
sloj=datoteka.GetLayerByName("katastar")
udaljenosti=[]
for i in sloj:
cestica1=loads(i.GetGeometryRef().ExportToWkb())
for j in sloj:
cestica2=loads(j.GetGeometryRef().ExportToWkb())
udaljenosti.append(cestica1.distance(cestica2))
max_udaljenost=max(udaljenosti)
print max_udaljenost
datoteka.Destroy()
我知道我在代码中有很多不必要的东西,但当我修正了这个最大距离时,我会修正这些。在
最有可能的问题是如何在层
sloj
上迭代。问题是如果你写这样的代码:这样就不会打印
N
乘以数字N
,而是只打印N
,后跟N-1
。原因是sloj
起迭代器的作用,因此当进入外部循环时,它将消耗第一个元素,而内部循环将消耗所有剩余的N-1
元素。因此,外循环在下一次迭代时终止,因为没有剩余的内容可以迭代。在为了在代码中反映这一点,例如,可以执行以下操作(如果对象的数量不是太大):
^{pr2}$然而,这些距离是在纬度/经度坐标下计算的,即它们不代表地球上的真实距离。然而,如果图层中的对象没有跨越地球的大面积区域,那么在经纬度坐标系中距离最大的一对很可能对应于“真实”距离最大的对。在
相关问题 更多 >
编程相关推荐