我有一组要更改为多边形的点。
我尝试过凹面船体,但没有得到想要的多边形,如下图所示,
当我使用Denaulay三角剖分时,我需要删除外部三角形。
有没有一种有效的方法可以做到这一点?
我也尝试过凸包。
我有一组要更改为多边形的点。
我尝试过凹面船体,但没有得到想要的多边形,如下图所示,
当我使用Denaulay三角剖分时,我需要删除外部三角形。
有没有一种有效的方法可以做到这一点?
我也尝试过凸包。
Answers:
我的结果与@radouxju相同。
操作方式:
反转点选择或选择与另一条折线相交的点[通过表达式选择]或[反转选择]
重要提示:您必须具有折线才能获得此结果!
如果您有使用python的经验,则可以使用Shapely库并根据两行中的点创建一个Polygon。您将需要告诉python这两行的起点和终点是什么。
from shapely.geometry import Point, Polygon, LineString
import geopandas as gpd
import pandas as pd
line1 = [(1,1),(2,1.2),(3,1)]
line2 = [(1,2),(2,2.2),(3,2)]
# you need to reverse the order of one line to make it a polygon
line2reverse = list(reversed(line2))
polgonList2 = line1 + line2reverse
Polygon(polgonList2)
甚至更好:您还可以使用Geopandas来做到这一点。geopandas允许您轻松保存为多种格式,包括shapefile
d = {'identifier' : [1, 2],
'name' : ["Netherlands", "Germany"],
"line1": [[(1,1),(2,1.2),(3,1)], [(1,1),(2,1.2),(3,1)]],
"line2": [[(1.1,2.1),(2.1,2.3),(3.1,2.2)],[(1,2),(2,2.2),(3,2)]]
}
df = pd.DataFrame(d)
def makePolygon(row):
line2reverse = list(reversed(row["line2"]))
return Polygon(line1+line2reverse)
geometries = []
for index, row in df.iterrows():
geometries.append(makePolygon(row))
crs = {'init': 'epsg:4326'}
gdf = gpd.GeoDataFrame(df, crs=crs, geometry=geometries)
gdf.to_file('MyGeometries.shp', driver='ESRI Shapefile')
您可以使用geopandas gpd.read_file()函数读取线的几何形状。
https://nbviewer.jupyter.org/gist/rutgerhofste/b01c17aa6851ea577f10c21a4c3717bc