【问题标题】:Pysal doesn't recognize some polygon neighborsPysal 无法识别某些多边形邻居
【发布时间】:2018-01-27 05:36:36
【问题描述】:

我正在使用 Pysal 工具分析几个 shapefile(多边形类型),其中包含在 QGIS 中完成的分割结果。

我使用

加载 shapefile

segshp = pysal.weights.Queen.from_shapefile(vect)

是对应的 shapefile 的名称。

问题是,当我查看邻居字典时,如果一个多边形共享少于 2 个像素,则它不被视为邻居。让我表现得更好一点:

使用 ArcGIS,我计算多边形邻居(分析工具 --> Proximity ---> 多边形邻居),例如,多边形 1227 有 4 个邻居,如图所示。

Neighbors calculated with ArcGIS

但是当使用 Pysal 在 Python 中加载时,多边形 1227 只有 3 个邻居,而缺少的一个是 3307,它只共享一个 2 像素的边框。其他仅共享 1 或 2 个像素的多边形也会发生同样的情况。这个 2 像素的“阈值”正是我在分析一些多边形时看到的。

Neighbors calculated with Pysal

为了考虑所有邻居,是否有任何改变“阈值”的方法?我在 Pysal 文档中看到过,并认为它可能与命令有关

pysal.weights.user.min_threshold_dist_from_shapefile

或类似的东西,但老实说我不知道​​。

我也尝试过使用 pysal.weights.Rook... 选项,但它识别的邻居更少,发现的岛屿更多。

非常感谢

【问题讨论】:

  • 您能否验证您的 shapefile 是否有效并且多边形 3307 与多边形 1227 有 2 个顶点?尝试在QGIS中编辑几何是查看3307的顶点。也尝试在QGIS或ArcGIS中修复几何。

标签: python polygons pysal


【解决方案1】:

谢谢@Charles。

确实这似乎是问题所在。检查顶点,虽然多边形 1227 和 3307 共享一个公共边界,但它们不共享任何顶点。一旦我手动编辑它们并纠正了新顶点坐标的微小差异,Pysal 工具就会将它们识别为邻居。检查 shapefile 的几何图形不会生成任何无效的几何图形,无论是在 Arcgis 还是 QGIS 中。

我会尝试想办法在这些情况下创建“缺失”的顶点,这样我就可以在 Pysal 线之前“修复”几何图形(欢迎任何关于这个问题的想法)。

无论如何,就目前而言,尊重最初的问题,问题已经解决。

【讨论】:

    【解决方案2】:

    即使在当前的最新版本中,Pysal 也无法处理某些情况,例如像这样的常见 MultiPoints 的情况:

    使用convex_hull 可能不是最好的效率,但我需要更多的正确性......

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-05
      • 2014-12-17
      • 2016-01-17
      • 1970-01-01
      • 2020-08-08
      • 2022-01-11
      相关资源
      最近更新 更多