我正在使用Pysal工具来分析包含QGIS中分段结果的几个shapefiles (类型多边形)。
我使用以下方法加载shapefile
segshp = pysal.weights.Queen.from_shapefile(vect)
是vect对应的shapefile的名称。
问题是,当我查看邻居字典时,如果一个多边形共享的像素少于2个像素,它就不被认为是邻居。让我表现得更好一点:
使用ArcGIS,我计算多边形邻居(分析工具->邻近->多边形邻居),例如,多边形1227有4个邻居,如图像所示。
但是在使用Pysal加载Python时,多边形1227只有3个邻居,而缺少的一个是3307,它只共享一个2像素的边框。同样的情况发生在其他只有1或2个像素的多边形上。这两个像素的“阈值”正是我所看到的分析一些多边形。
有没有改变这个“门槛”,以考虑所有的邻居?我在Pysal文档中看到过,并且认为它可能与命令有关
pysal.weights.user.min_threshold_dist_from_shapefile
或者类似的东西,但老实说我不知道。
我也试过用pysal.weights.Rook.选项,但它识别更少的邻居和发现更多的岛屿。
非常感谢
发布于 2017-08-23 08:04:44
谢谢查尔斯。
事实上,这似乎就是问题所在。检查顶点,虽然多边形1227和3307共享一个公共边界,但它们不共享任何顶点。一旦我手动编辑了它们并纠正了新顶点的坐标点中的一个小差异,Pysal工具就会将它们识别为邻居。在Arcgis或QGIS中,检查shapefile的几何形状不会生成任何无效的几何图形。
我将尝试找到在这些情况下创建“缺失”顶点的方法,这样我就可以在Pysal线之前“修复”几何图形(关于这个问题的任何想法都是受欢迎的)。
无论如何,现在这个问题已经解决了,并且尊重了原来的问题。
发布于 2019-01-02 04:19:16
即使在当前的最新版本中,Pysal也无法处理某些情况,例如像这样的普通MultiPoints的情况:

对效率来说,使用convex_hull可能不是最好的,但我需要更多的正确性。
https://stackoverflow.com/questions/45758233
复制相似问题