Pysal 无法识别某些多边形邻居
Pysal doesn't recognize some polygon neighbors
我正在使用 Pysal 工具分析几个包含在 QGIS 中完成的分割结果的形状文件(多边形类型)。
我使用
加载 shapefile
segshp = pysal.weights.Queen.from_shapefile(vect)
是vect对应shapefile的名称。
问题是,当我查看邻居字典时,如果一个多边形共享的像素少于 2 个,则它不被视为邻居。让我展示得更好一点:
我使用 ArcGIS 计算多边形邻域(分析工具 --> 邻近度 ---> 多边形邻域),例如,多边形 1227 有 4 个邻域,如图所示。
Neighbors calculated with ArcGIS
但是当使用 Pysal 在 Python 中加载时,多边形 1227 只有 3 个邻居,缺少的是 3307,它只共享一个 2 像素的边界。其他仅共享 1 或 2 个像素的多边形也会发生同样的情况。这个 "threshold" 的 2 个像素正是我看到的分析一些多边形的结果。
Neighbors calculated with Pysal
是否可以更改 "threshold" 以考虑所有邻居?我在 Pysal 文档中看到过,并认为它可能与命令有关
pysal.weights.user.min_threshold_dist_from_shapefile
或类似的东西,但老实说我不知道。
我也试过 pysal.weights.Rook... 选项,但它识别的邻居更少,发现的岛屿更多。
非常感谢
谢谢@Charles。
确实这似乎是问题所在。检查顶点,虽然多边形 1227 和 3307 共享一个公共边界,但它们不共享任何顶点。一旦我手动编辑它们并更正新顶点坐标中的微小差异,Pysal 工具就会将它们识别为邻居。检查 shapefile 的几何图形不会生成任何无效的几何图形,无论是在 Arcgis 还是 QGIS 中。
我会想办法在这些情况下创建 "missing" 顶点,这样我就可以 "fix" Pysal 行之前的几何体(欢迎就此提出任何想法)。
无论如何,现在并尊重原始问题,问题已经解决。
即使在当前最新版本中,Pysal 也无法处理某些情况,例如像这样的常见多点情况:
使用 convex_hull 可能不是效率最高的方法,但我更需要正确性...
我正在使用 Pysal 工具分析几个包含在 QGIS 中完成的分割结果的形状文件(多边形类型)。
我使用
加载 shapefilesegshp = pysal.weights.Queen.from_shapefile(vect)
是vect对应shapefile的名称。
问题是,当我查看邻居字典时,如果一个多边形共享的像素少于 2 个,则它不被视为邻居。让我展示得更好一点:
我使用 ArcGIS 计算多边形邻域(分析工具 --> 邻近度 ---> 多边形邻域),例如,多边形 1227 有 4 个邻域,如图所示。
Neighbors calculated with ArcGIS
但是当使用 Pysal 在 Python 中加载时,多边形 1227 只有 3 个邻居,缺少的是 3307,它只共享一个 2 像素的边界。其他仅共享 1 或 2 个像素的多边形也会发生同样的情况。这个 "threshold" 的 2 个像素正是我看到的分析一些多边形的结果。
Neighbors calculated with Pysal
是否可以更改 "threshold" 以考虑所有邻居?我在 Pysal 文档中看到过,并认为它可能与命令有关
pysal.weights.user.min_threshold_dist_from_shapefile
或类似的东西,但老实说我不知道。
我也试过 pysal.weights.Rook... 选项,但它识别的邻居更少,发现的岛屿更多。
非常感谢
谢谢@Charles。
确实这似乎是问题所在。检查顶点,虽然多边形 1227 和 3307 共享一个公共边界,但它们不共享任何顶点。一旦我手动编辑它们并更正新顶点坐标中的微小差异,Pysal 工具就会将它们识别为邻居。检查 shapefile 的几何图形不会生成任何无效的几何图形,无论是在 Arcgis 还是 QGIS 中。
我会想办法在这些情况下创建 "missing" 顶点,这样我就可以 "fix" Pysal 行之前的几何体(欢迎就此提出任何想法)。
无论如何,现在并尊重原始问题,问题已经解决。
即使在当前最新版本中,Pysal 也无法处理某些情况,例如像这样的常见多点情况:
使用 convex_hull 可能不是效率最高的方法,但我更需要正确性...