我试图用python中的一组long/lat元组构建一个多边形。多边形,我的意思是我需要定义一个包含点的区域,类似于一个凹壳。我使用的python代码:
from shapely.geometry import Polygon
import geopandas as gpd
import geoplot
crs = {'init': 'epsg:4326'}
z=[(-88.09614, 42.21828), (-88.09605, 42.21903), (-88.09558, 42.21758), (-88.09466, 42.21857), (-88.09448, 42.2176), (-88.09425999999999, 42.2191), (-88.09406, 42.2186), (-88.09352, 42.21763), (-88.09329, 42.21859), (-88.09317, 42.21907), (-88.09226, 42.218779999999995), (-88.09185, 42.217659999999995), (-88.09176, 42.218779999999995), (-88.09138, 42.217659999999995), (-88.09127, 42.218779999999995), (-88.09094, 42.217620000000004), (-88.0907, 42.2188), (-88.09052, 42.21753), (-88.09005, 42.218709999999994), (-88.08998000000001, 42.2174), (-88.08957, 42.218309999999995), (-88.08889, 42.217290000000006), (-88.08830999999999, 42.21763)]
poly = Polygon(z)
pg=gpd.GeoDataFrame(index=[0], crs=crs, geometry=[poly])
geoplot.polyplot(pg)
结果是:view plot 这些点是按经度排序的,函数会考虑这种排序,但只要绘制的结果显然不是多边形,它就无关紧要了。在
多边形可以是,但不一定是凸壳。在你的例子中,你有一个自交的多边形,但一个多边形仍然存在。如果您的目标是计算凸壳,可以使用
scipy.spatial.ConvexHull
,它使用qhull来计算凸壳来自the documentation:
以及
^{pr2}$策划。在
赫尔的概念是凹的。一个可能的定义是alpha shapes。这些可以用alphashape package生成。事实上,文档中包括使用geopandas的示例:
相关问题 更多 >
编程相关推荐