匀称的contains(point)始终为False [英] Shapely contains(point) always gives False

查看:75
本文介绍了匀称的contains(point)始终为False的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我今天开始从事大熊猫的定型工作,我正尝试使用contains方法检查点是否位于

I started working on geopandas and shapely today and I am trying to use the contains method to check if a point lies inside a polygon of geological constituency data from here. My code is:

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

其中,janak是来自shapefile的几何数据的多边形,而cent_janak是janak的质心. 为了验证,我像这样绘制它们

where janak is a polygon from geometry data of a shapefile and cent_janak is the centroid of janak. To verify, I plotted them like this

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()

结果图是这样.

为更加清晰起见,janak.boundary.coords.xy多边形坐标为:

For more clarity janak.boundary.coords.xy polygon coords are:

(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])) 

推荐答案

调用janak.boundary.contains(cent_janak)时,您正在询问cent_janak是否位于 边界上.您正在寻找的方法就是janak.contains(cent_janak).

When you call janak.boundary.contains(cent_janak), you are asking if cent_janak lies on the boundary. The method you are looking for is simply janak.contains(cent_janak).

这篇关于匀称的contains(point)始终为False的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆