Shapely: MultiPoint.difference(Point)๋Š” ์›๋ž˜ ์ˆœ์„œ๋ฅผ ์œ ์ง€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2019๋…„ 04์›” 01์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: Toblerity/Shapely

๊ฐ„๋‹จํ•œ ์˜ˆ:

>>> from shapely.geometry import MultiPoint, Point
>>> points = MultiPoint([Point(0, 0), Point(1, 0), Point(1, 1), Point(0, 1)])
>>> points.wkt
'MULTIPOINT (0 0, 1 0, 1 1, 0 1)'
>>> bad_point = Point(1, 0)
>>> points.difference(bad_point).wkt
'MULTIPOINT (0 0, 0 1, 1 1)'

๋ณด์‹œ๋‹ค์‹œํ”ผ difference MultiPoint ์—์„œ Point ๋ฅผ ์ œ๊ฑฐํ•˜๋ฉด ์ดˆ๊ธฐ ์ˆœ์„œ๊ฐ€ ๊นจ์ง‘๋‹ˆ๋‹ค. ์˜ˆ์ƒ ์ถœ๋ ฅ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

'MULTIPOINT (0 0, 1 1, 0 1)'

์ด๊ฒƒ์€ ๋ฒ„๊ทธ์ž…๋‹ˆ๊นŒ ์•„๋‹ˆ๋ฉด ์˜๋„๋œ ๊ฒƒ์ž…๋‹ˆ๊นŒ? ๋ฌธ์„œ๋Š” ์ด ๋™์ž‘์— ๋Œ€ํ•ด ์•„๋ฌด ๋ง๋„ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Shapely ๋ฒ„์ „: 1.6.4.post1, conda์—์„œ ์„ค์น˜๋จ.

documentation geos wontfix

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋‹จ์ˆœ ๊ธฐ๋Šฅ ์•ก์„ธ์Šค ๋Š” OGC 06-103r4, MultiPoint์˜ ๊ฒฝ์šฐ ยง6.1.5๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

ํฌ์ธํŠธ๋Š” ์˜๋ฏธ์ƒ ์ค‘์š”ํ•œ ๋ฐฉ์‹์œผ๋กœ ์—ฐ๊ฒฐ๋˜๊ฑฐ๋‚˜ ์ •๋ ฌ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(GeometryCollection์—์„œ ๋…ผ์˜ ์ฐธ์กฐ).

๋”ฐ๋ผ์„œ ์ด๋Š” ๋™์ž‘์ด ์˜๋„๋œ ๊ฒƒ์ž„์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. JTS ์—์„œ๋„ ๋™์ผํ•œ ๋™์ž‘์ž…๋‹ˆ๋‹ค.

์ˆœ์„œ๋ฅผ ์œ ์ง€ํ•˜๋Š” ์œ ์‚ฌํ•œ ๊ฐœ์ฒด๋Š” [Multi]LineString ์ด์ง€๋งŒ ์˜ˆ์ œ๋Š” ๋‹ค๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  3 ๋Œ“๊ธ€

์ด๊ฒƒ์€ Shapely๊ฐ€ ๋ž˜ํผ(wrapper)์ธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ธ GEOS์—์„œ ์ƒ์†๋œ ๋™์ž‘์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์ด ๊ทธ ์ž์ฒด ๋กœ ๋ฒ„๊ทธ๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ฐจ์ด๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋‘ ์ถœ๋ ฅ์€ ๊ธฐํ•˜ํ•™์ ์œผ๋กœ ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋‹จ์ˆœํ•œ ํ”ผ์ฒ˜ ๋ชจ๋ธ์ด ์ปฌ๋ ‰์…˜์˜ ๋ถ€ํ’ˆ ์ˆœ์„œ์— ์˜๋ฏธ๋ฅผ ๋‘์ง€ ์•Š๋Š”๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์„ ์„ค๋ช…ํ•˜๋Š” ๊ฒƒ์ด ๋ฌธ์„œ์— ์ถ”๊ฐ€๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์ฐจ์ด์  ๋ฐฉ๋ฒ•์— ํŠน์ •ํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ์–ด๋””์— ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ข‹์€์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋‹จ์ˆœ ๊ธฐ๋Šฅ ์•ก์„ธ์Šค ๋Š” OGC 06-103r4, MultiPoint์˜ ๊ฒฝ์šฐ ยง6.1.5๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

ํฌ์ธํŠธ๋Š” ์˜๋ฏธ์ƒ ์ค‘์š”ํ•œ ๋ฐฉ์‹์œผ๋กœ ์—ฐ๊ฒฐ๋˜๊ฑฐ๋‚˜ ์ •๋ ฌ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(GeometryCollection์—์„œ ๋…ผ์˜ ์ฐธ์กฐ).

๋”ฐ๋ผ์„œ ์ด๋Š” ๋™์ž‘์ด ์˜๋„๋œ ๊ฒƒ์ž„์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. JTS ์—์„œ๋„ ๋™์ผํ•œ ๋™์ž‘์ž…๋‹ˆ๋‹ค.

์ˆœ์„œ๋ฅผ ์œ ์ง€ํ•˜๋Š” ์œ ์‚ฌํ•œ ๊ฐœ์ฒด๋Š” [Multi]LineString ์ด์ง€๋งŒ ์˜ˆ์ œ๋Š” ๋‹ค๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์•Œ ๊ฒ ์–ด. _Collections_ ์„น์…˜์˜ ๋์— ์ฃผ๋ฌธ ๋ณด์กด์— ์˜์กดํ•ด์„œ๋Š” ์•ˆ ๋œ๋‹ค๋Š” ๊ฒฝ๊ณ  ๋ฌธ๊ตฌ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰