๊ตฌ๋ฉ์ polylabel ์๊ณ ๋ฆฌ์ฆ์ shapely ๊ตฌํ์์ ์ฌ๋ฐ๋ฅด๊ฒ ์ค๋ช ๋์ง ์์ต๋๋ค.
from shapely.geometry import Polygon
from shapely.algorithms.polylabel import polylabel
poly1=Polygon(shell=[(0,0),(10,0),(10,10),(0,10),(0,0)][::-1], holes=[[(2,2),(6,2),(6,6),(2,6),(2,2)]])
import geopandas
gdf2 = geopandas.GeoDataFrame(geometry=[poly1])
gdf2.plot()
label_location = polylabel(poly1, tolerance=0.05)
print(label_location.x)
print(label_location.y)
์ด ์คํฌ๋ฆฝํธ์ ์ถ๋ ฅ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
6.25
3.75
๊ทธ๋ฌ๋ ์ ํํ ์์น๋ 7.65625, 7.65625์ ๊ฐ๊น์ต๋๋ค. ์ด๊ฒ์ ์ด ํด๋ฆฌ๊ณค์ ํ๋กฏ์ ๋ณด๋ฉด ํ์ธํ ์ ์์ต๋๋ค.
ํด๋ฆฌ๊ณค ์ ์์์ ๋ญ๊ฐ ์๋ชปํ๊ณ ์๋ ๊ฒ์ผ ์๋ ์์ง๋ง ์ด ํด๋ฆฌ๊ณค์ ์ธ์คํด์คํํ๋ ๋ค์ํ ๋ฐฉ๋ฒ์ ์๋ํ์ง๋ง ํญ์ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ์ป์์ต๋๋ค.
๋ฆฌ๋ ์ค
๋งค๋ํ ๋ฒ์ 1.6 ๋ฐ 1.7a3์์ ํ ์คํธ๋จ
https://github.com/mapbox/polylabel ์์ฒด์์ ์ ์ํ๋ ์ขํ๊ฐ ๋ค๋ฅธ์ง ํ์ธํด ์ฃผ์๊ฒ ์ต๋๊น?
TypeScript์ ์๋ ์๊ณ ๋ฆฌ์ฆ:
import polylabel from "polylabel";
let exterior = [[0,0],[10,0],[10,10],[0,10],[0,0]];
let hole = [[2,2],[6,2],[6,6],[2,6],[2,2]];
let polygon = [exterior, hole]
console.log(polylabel(polygon, 0.01));
PS> .\node_modules\.bin\tsc test.ts
PS> node .\test.js
[ 7.65625, 7.65625 ]
๋งค๋ํ:
>>> from shapely.ops import polylabel
>>> from shapely.geometry import Polygon
>>> exterior = [[0,0],[10,0],[10,10],[0,10],[0,0]]
>>> hole = [[2,2],[6,2],[6,6],[2,6],[2,2]]
>>> p = Polygon(exterior, [hole])
>>> polylabel(p, 0.01).coords[:]
[(6.25, 3.75)]
๋น์ ์ด ๋ง์ต๋๋ค @benediktbrandt. Shapely ๊ตฌํ์ ํด๋ฆฌ๊ณค ์ธ๋ถ๊น์ง์ ๊ฑฐ๋ฆฌ๋ง ๊ณ ๋ คํ๋ฏ๋ก ๊ตฌ๋ฉ์ ์ฌ๋ฐ๋ฅด๊ฒ ์ฒ๋ฆฌํ์ง ์์ต๋๋ค. ์ด๊ฒ์ ์๋ ์๊ณ ๋ฆฌ์ฆ์ ๋์๊ณผ ์ผ์นํ๋๋ก ์์ ๋์ด์ผ ํ๋ ๋ฒ๊ทธ๋ผ๊ณ ์๊ฐํฉ๋๋ค.
ํด๋ฆฌ๊ณค ์ธ๋ถ๋ฅผ ๋ผ์ธ์คํธ๋ง์ผ๋ก ๋ณํํ๋ ๊ฒ์ ์์ฑ๋ ๋ชจ๋ ์ ์ ๋ํด ์ํ๋๊ธฐ ๋๋ฌธ์ ์ฌ๊ธฐ์์๋ ์ฝ๊ฐ ๋นํจ์จ์ ์ ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋น์ ์ด ๋ง์ต๋๋ค @benediktbrandt. Shapely ๊ตฌํ์ ํด๋ฆฌ๊ณค ์ธ๋ถ๊น์ง์ ๊ฑฐ๋ฆฌ๋ง ๊ณ ๋ คํ๋ฏ๋ก ๊ตฌ๋ฉ์ ์ฌ๋ฐ๋ฅด๊ฒ ์ฒ๋ฆฌํ์ง ์์ต๋๋ค. ์ด๊ฒ์ ์๋ ์๊ณ ๋ฆฌ์ฆ์ ๋์๊ณผ ์ผ์นํ๋๋ก ์์ ๋์ด์ผ ํ๋ ๋ฒ๊ทธ๋ผ๊ณ ์๊ฐํฉ๋๋ค.
https://github.com/Toblerity/Shapely/blob/cfa66d418fe3afe2fcb48438fcc9156142abaeb8/shapely/algorithms/polylabel.py#L44 -L53
ํด๋ฆฌ๊ณค ์ธ๋ถ๋ฅผ ๋ผ์ธ์คํธ๋ง์ผ๋ก ๋ณํํ๋ ๊ฒ์ ์์ฑ๋ ๋ชจ๋ ์ ์ ๋ํด ์ํ๋๊ธฐ ๋๋ฌธ์ ์ฌ๊ธฐ์์๋ ์ฝ๊ฐ ๋นํจ์จ์ ์ ๋๋ค.