Python ile ilgili deneyiminiz varsa, Shapely kütüphanesini kullanabilir ve iki satırdaki noktalardan bir Çokgen oluşturabilirsiniz. Her iki çizginin başlangıç ve bitiş noktalarının ne olduğunu python'a söylemeniz gerekir.
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)
Daha da iyisi: bunu yapmak için jeopandaları da kullanabilirsiniz. geopandas, şekil dosyaları da dahil olmak üzere birden çok formata kolayca kaydetmenizi sağlar
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 () işlevini kullanarak çizgi geometrilerini okuyabilirsiniz.
Genel CBS'de çokgen köşe sıralaması: saat yönünde veya saat yönünün tersine
https://nbviewer.jupyter.org/gist/rutgerhofste/b01c17aa6851ea577f10c21a4c3717bc