在ArcGIS Desktop中将栅格图像的边界获取为多边形吗?


28

我在ArcGIS Desktop中有一个矩形栅格图像。

如何生成仅与光栅图像范围相同的多边形?

也就是说,我要有一个多边形图层,该多边形图层具有一个四边形,即图像的边缘。

我已经尝试过简单地进行Raster-> Polygon转换,但这试图使用图像中的数据生成轮廓-我想要的只是图像边缘的轮廓。

我正在使用ArcGIS Desktop 10。

Answers:


33

如果您有Spatial Analyst,则可以:

  1. 使用栅格计算器将栅格乘以0以创建恒定值栅格。(请确保将其转换为整数类型,否则第2步将无效)
  2. 使用栅格转多边形工具将步骤1的结果转换为多边形。

另一个解决方案:

如果您拥有3D Analyst许可证,则可以使用3D Analyst>转换>来自栅格下的Raster Domain工具(但是它不具有平滑功能)


12

您可以使用3D Analyst中的“栅格域”工具来创建与栅格数据具有相同范围的多边形


欢迎使用GIS SE!您能否在答案中添加参考?这样,它将更加牢固。
RK 2012年

栅格域工具完美地完成了任务!创建栅格数据的轮廓或边界。

1
关于此工具的警告语-创建的边界多边形是栅格数据在像素CENTER(而不是像素的外部边缘)处开始和结束的范围。我只是尝试过,并认为它返回了栅格的外部边界框,但是当您放大时,您会看到边界框从像素中心开始。
fbiles

实际上,IRasterDomainExtractor.ExtractDomain方法有一个参数,用于控制它使用像素/像元的中心还是外部边缘。
普雷斯顿

太棒了!一个工具,我有一个栅格的多边形轮廓。谢谢!
user3281667

11

简单地数字化呢?单击-单击-单击-单击完成。


8
不太确定为什么这个选项被否决了。您可以找到范围角的坐标,并在这些坐标处创建顶点。它甚至可以用于分析。如果仅用于显示,则单击-单击-单击-单击非常有用。
2012年

3
我说这是因为栅格可能是不规则形状,并且视复杂程度而定,可能会导致非常繁琐的数字化工作
Phil Henley

4
但是,OP说这是矩形的。对我来说似乎很简单。通过放大并保持准确,实际的栅格轮廓和数字化轮廓之间的差异对于任何现实应用都是可以忽略的。
马特

10

您可以使用“数据管理工具箱”中的“构建足迹”工具。您必须从栅格中创建一个镶嵌数据集。

在文件地理数据库中创建一个新的镶嵌图,添加栅格。

在ArcMap中打开您的Mosaic并提取足迹。

那就是我会做的。


8

我使用了这个简单的python脚本,它使用文件夹中存在的所有栅格的范围创建了一个面要素类。要使用它,可以在ArcToolbox中创建一个工具,也可以简单地更改InFolder和Dest(目标)变量。

import arcpy,os

InFolder = arcpy.GetParameterAsText(0)
Dest=arcpy.GetParameterAsText(1)

arcpy.env.workspace=InFolder
#The raster datasets in the input workspace
in_raster_datasets = arcpy.ListRasters()

arcpy.CreateFeatureclass_management(os.path.dirname(Dest),
                                   os.path.basename(Dest),
                                   "POLYGON")
arcpy.AddField_management(Dest,"RasterName", "String","","",250)
arcpy.AddField_management(Dest,"RasterPath", "String","","",250)

cursor = arcpy.InsertCursor(Dest)
point = arcpy.Point()
array = arcpy.Array()
corners = ["lowerLeft", "lowerRight", "upperRight", "upperLeft"]
for Ras in in_raster_datasets:
    feat = cursor.newRow()  
    r = arcpy.Raster(Ras)
    for corner in corners:    
        point.X = getattr(r.extent, "%s" % corner).X
        point.Y = getattr(r.extent, "%s" % corner).Y
        array.add(point)
    array.add(array.getObject(0))
    polygon = arcpy.Polygon(array)
    feat.shape = polygon
    feat.setValue("RasterName", Ras)
    feat.setValue("RasterPath", InFolder + "\\" + Ras)
    cursor.insertRow(feat)
    array.removeAll()
del feat
del cursor  

可以详细告诉我们如何使用此代码。我想在.asc光栅文件上使用它。我的图像是不同的子文件夹。
GIS Data Butcher

1
jeb的回答对我有用,没有足够的代表投票给他。@GIS Data Butcher将完整的源代码保存到script.py文件中,然后从ArcMap中的Python Window执行它。您可以在Python窗口上使用以下命令从文件执行脚本。> execfile(r'd:\ temp \ script.py')
Asad

完善!!我想知道,是否还有一种方法可以读取子文件夹?
拉斐尔

@raphael,当然,您只需要在脚本中实现标准的python os.listdir或os.walk。
jeb

@jeb是的,我明白了这个概念...机器人,我对此非常陌生,无法正常工作...您能提供些帮助吗?
拉斐尔

4

另外,一种简单的方法是使用“重新分类”工具,您应在此单击“分类”按钮,并将类数更改为1。单击“确定”。现在,可以使用栅格到多边形转换工具轻松地转换输出栅格。;)


4

我认为将栅格重新分类并将其转换为多边形可能会非常耗时。我认为最简单的方法是:

  • 获取maxX,maxY,minX,minY(这可以在Python中使用describe命令完成)
  • 运行具有以上范围且行/列数为1的Create Fishnet

如果您有很多栅格,则应使用Python进行此操作,并且可以在几秒钟内创建数百个足迹。


0

在ArcCatalog中,您可以在.gdb中创建栅格目录(数据管理工具->栅格)。不受管是可以的。然后右键单击并加载(如果栅格仅位于文件夹中,则“从工作区加载”。如果将栅格目录加载到ArcMap中,则可以右键单击->数据->导出轮廓作为形状文件或要素类。形状文件将具有一个“名称”字段,其中填充了栅格的名称。

栅格目录将自动显示范围,但我需要将范围发送给未使用ArcGIS的人员。


0

使用转换工具工具箱中的“栅格转多边形”工具。确保取消选中“简化多边形”框。这将完全创建您想要的。


8
您确定这不仅会造成巨大的多边形混乱,而是为原始图像中的每组连续的等值像素提供一个多边形吗?
ub

在此之后,您总是可以添加一个溶解来获得范围poly。但是,我敢打赌@jeb列出的python解决方案会更快。
GeoJohn 2015年

0

“栅格域”工具将在形状不规则的栅格周围创建多边形。我认为3d分析师扩展程序需要许可证。


0

使用ArcCatalog是最佳选择。根据可用栅格创建镶嵌数据集。在镶嵌图中定义“无值”,以避免栅格背景包含在多边形中。使用辐射度法建立足迹。在ArcGIS中打开镶嵌数据集,然后将“足迹”导出为shp文件。获取镶嵌边界的好方法...


0

如果要获取DEM栅格的轮廓,则需要执行以下操作

如果您有Spatial Analyst和3d Analyst,则可以:

  1. 使用栅格计算器将栅格乘以0以创建恒定值栅格。
  2. 通过使用“ INT(工具)”将步骤1的结果转换为栅格整数。这是下一步所必需的。
  3. 使用“栅格转多边形”工具将步骤2的结果转换为多边形(仅适用于栅格整数)。

嗨,Seamster02,欢迎来到GIS Stack Exchange :)按照书面说明,这与公认的答案gis.stackexchange.com/a/22016/108并无明显不同。
马特·威尔基
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.