我有一个包含多个图层组的ArcMap 10项目。一层是栅格DEM,另一层组是一堆矢量shapefile(包括点,线和面)。客户端希望所有矢量数据都包含Z值。
用X和Y值填充矢量数据的属性表很容易,但是如何填充Z值?
有没有一种方法可以使用“字段计算器”从每个矢量要素的DEM图层中“抓取”高度值?
我应该补充一点,我们没有3D Analyst或Spatial Analyst扩展的许可证。
我有一个包含多个图层组的ArcMap 10项目。一层是栅格DEM,另一层组是一堆矢量shapefile(包括点,线和面)。客户端希望所有矢量数据都包含Z值。
用X和Y值填充矢量数据的属性表很容易,但是如何填充Z值?
有没有一种方法可以使用“字段计算器”从每个矢量要素的DEM图层中“抓取”高度值?
我应该补充一点,我们没有3D Analyst或Spatial Analyst扩展的许可证。
Answers:
在ArcGIS中,我仅使用点矢量来完成此操作-不知道如何使用多边形或线要素。不幸的是,您确实需要Spatial Analyst。Spatial Analyst工具\提取\将多个值提取到点并将值提取到点上有一个工具。将多个值提取到点更好,因为它使您可以重命名将值提取到的z字段名称,将值提取到点不允许您执行此操作。我在ArcMap中这样做很麻烦(工具崩溃),但在ArcCatalog中工作正常。
用于ArcMap 的(免费)Hawths Analysis Tools扩展具有一个“ 相交点工具”,但是该扩展的开发已在两年前停止。它已被我从未使用过的地理空间建模环境所取代。
SAGA-GIS(免费的独立软件)在Shapes中具有两个功能-网格\将网格值添加到点和形状-网格\将网格值添加到Shapes可能可以完成您想要的操作。这是“向形状添加网格值”工具的描述:
空间连接:从选定形状图层的形状位置处的选定网格中检索信息,并将其添加到生成的形状图层中。对于点,这类似于“向点添加网格值”模块。对于线和多边形,将从干扰的网格单元中计算出平均值。对于多边形,“多边形的网格统计信息”模块提供了更多高级选项。
我认为,SAGA是您最好的选择。
希望这可以帮助!
也许您可以使用gdallocationinfo通过将X,Y值传递给它来检索所有Z值。一旦有了Z值,就可以使用字段计算器将Z值添加到组成每个要素的点上。可能会涉及一些脚本编制,但是从理论上讲这应该可行。
我建议您获得3D Analyst许可证并使用“ 添加表面信息”。或者,使用“插值形状”后跟“添加Z信息”,该功能允许某些功能返回NA值而不会导致整个程序崩溃。否则,有两种行之有效的免费方法需要更多的工作。可以在QGIS中实现这些功能,因此您不必离开舒适的GIS环境。
我知道如何做到这一点。线和面是不同的,因为它们穿过DEM的多个网格。您可以沿线或类似的点取点,并为其提取值。在Arc中,您将需要空间分析器来获取值,但是您可以通过Qgis(免费)获取这些值,尽管它没有那么有用。您将需要熟练使用excel文件并从shapefile来回转换它们。Qgis将生成一个只有提取的点高程的shapefile,因此您需要将其作为excel文件(带有X,Y值)复制并粘贴到原始表中,这样您就可以将其恢复为带有“显示x,y数据”)。您需要跟踪投影,以确保在转换回shapefile时选择正确的投影。