Shapely содержит (точка) всегда дает False - PullRequest
0 голосов
/ 06 декабря 2018

Я начал работать с геопандами и сегодня хорошо, и я пытаюсь использовать метод contains, чтобы проверить, лежит ли точка внутри многоугольника данных геологического окружения из здесь .Мой код:

if janak.boundary.contains(cent_janak):
    print('True')
else:
    print('False')

, где janak - это многоугольник из данных геометрии шейп-файла, а cent_janak - центр тяжести джанака.Чтобы проверить, я построил их так:

from descartes import PolygonPatch
BLUE = '#6699cc'
poly= janak
fig = plt.figure() 
ax = fig.gca() 
ax.add_patch(PolygonPatch(poly, fc=BLUE, ec=BLUE, alpha=0.5, zorder=2 ))

ax.axis('scaled')
plt.plot(cjx, cjy, 'bo')
plt.show()

В результате получается такой график.enter image description here

Для большей ясности janak.boundary.coords.xy координаты многоугольника:

(array('d', [77.27673511633259, 77.28194987388764, 77.29578190561051, 77.27662755381863, 77.25524963905963, 77.2580696782731, 77.26521771742375, 77.26932536547332, 77.26832967477475, 77.27477975458208, 77.27673511633259]),
 array('d', [28.540205606503605, 28.52730150785834, 28.495644714432103, 28.493054206486477, 28.506460566601902, 28.521859125598212, 28.525798083314953, 28.52190443074494, 28.540396930973657, 28.544344420558616, 28.540205606503605]))

Координаты центроида cent_janak.coords.xy:

(array('d', [77.27464056229368]), array('d', [28.51348721728798])) 

1 Ответ

0 голосов
/ 06 декабря 2018

Когда вы звоните janak.boundary.contains(cent_janak), вы спрашиваете, лежит ли cent_janak на границе.Метод, который вы ищете, это просто janak.contains(cent_janak).

...