Nếu bạn có kinh nghiệm với python, bạn có thể sử dụng thư viện Shapely và tạo Đa giác từ các điểm trong hai dòng. Bạn sẽ cần cho python biết điểm bắt đầu và điểm kết thúc của cả hai dòng là gì.
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)
Thậm chí tốt hơn: bạn cũng có thể sử dụng geopandas để làm điều này. geopandas cho phép bạn dễ dàng lưu vào nhiều định dạng bao gồm cả shapefiles
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')
bạn có thể đọc các hình học dòng bằng hàm geopandas gpd.read_file ().
Thứ tự các đỉnh đa giác trong GIS nói chung: theo chiều kim đồng hồ hoặc ngược chiều kim đồng hồ
https://nbviewer.jupyter.org/gist/rutgerhofste/b01c17aa6851ea577f10c21a4c3717bc