我有一个从 ArcGIS 服务器导出的简单 GIS 图层图像,现在我想将其转换回多边形。这样做的最佳方法是什么?
- 编写我自己的脚本(什么是最好的三角测量?线/边跟踪?)
- 使用一些工具?(opencv?还有别的吗?)
我有一个从 ArcGIS 服务器导出的简单 GIS 图层图像,现在我想将其转换回多边形。这样做的最佳方法是什么?
您显示的图像已栅格化,因此您无法返回原始多边形。
但是,通过一些简单的连通分量分析,您可以提取所有连续的 blob(相同颜色)。这些可以完全由它们的边界表示(蓝线之外的任何东西)。
您的新多边形现在是这些边界像素。当然,您可以应用多边形简化来减少多边形中实际节点的数量。OpenCV 有几种这样的算法。
虽然 Gary 使用 argGis 的答案似乎更好,但如果你只有这个光栅图像,你可以通过只保留蓝色像素来提取轮廓(简单的 for 循环像素数据以创建蒙版,甚至可能Mat mask = orig == cv::Vec3b(255,0,0)
(用实际更改值)边框像素颜色)。然后您可以找到每个轮廓的连通分量,例如cv::floodFill
使用 ` 并使用
cv::approxPolyDp对点进行矢量化。
最好和最简单的方法是使用ArcGIS 中的从栅格工具集。您可能想要使用的工具是Raster to Polygon。您可以直接在 ArcGIS for Desktop 中运行它或在 Python 脚本中调用它。如果您愿意,也可以在 ArcGIS for Server 中运行它。ArcGIS 的所有许可级别都包括栅格转多边形工具。
请记住,Raster to Polygon 将尝试将图像的所有部分提取为多边形,包括边界,因此您需要进行一些清理工作。希望这就像选择所有边界特征(即图像中的蓝色特征)并删除它们一样简单。