在ArcGIS中使用ArcPy构建栅格四至矢量面
发布时间: 2024-12-16
所属分类: Python、ArcGIS 学习及开发
帮朋友下载高清卫星影像,按一比一万的图幅下载了很多景,一部分因为疏忽遗漏了下载,直接在ArcMap中加载这些卫片,由于数据量大,需要花费大量时间构建影像金字塔,而且每次移动鼠标都会很卡顿,难以排查。我就在想通过获取影像四至的方式构建矢量面,这样大大提高了获取栅格范围的效率。最终,通过编写arcpy脚本轻松解决。
效果如下图所示,红色图形为范围面,绿色面状图形为生成的栅格范围矢量面,可以清楚的看到套合情况。
完整代码
具体实现代码如下:
# -*- coding:utf-8 -*-
import os
import time
import arcpy
def makedirs_file(input_path):
"""
检查文件夹是否存在,否则创建文件夹
@param input_path: 文件或文件夹名称
@return:
"""
if os.path.isdir(input_path):
if os.path.exists(input_path) is False:
os.makedirs(input_path)
else:
input_path = os.path.dirname(input_path)
if os.path.exists(input_path) is False:
os.makedirs(input_path)
if __name__ == '__main__':
# 输入栅格存储位置
rastPath = r'F:\gisData\data0929\refY202410072'
out_file = os.path.join(rastPath, 'shp', 'RasterExtent.shp')
# 程序运行开始时间
startTime = time.time()
arcpy.env.workspace = rastPath
rasts = arcpy.ListRasters()
if len(rasts) < 1:
raise IOError(u"错误,未发现栅格文件!")
if arcpy.Exists(out_file):
arcpy.Delete_management(out_file)
# 创建输出文件夹
makedirs_file(out_file)
resultShp = arcpy.CreateFeatureclass_management(os.path.dirname(out_file), "RasterExtent.shp", "POLYGON")
arcpy.AddField_management(resultShp, "Name", "TEXT", 50)
cursor = arcpy.InsertCursor(resultShp)
for rast in rasts:
raster = arcpy.Raster(rast)
extent = raster.extent # 读取栅格的四个角点坐标
array = arcpy.Array()
ll = arcpy.Point(extent.XMin, extent.YMin) # lowerLeft
ul = arcpy.Point(extent.XMin, extent.YMax) # upperLeft
ur = arcpy.Point(extent.XMax, extent.YMax) # upperRight
lr = arcpy.Point(extent.XMax, extent.YMin) # lowerRight
array.append(ll)
array.append(ul)
array.append(ur)
array.append(lr)
array.append(ll)
row = cursor.newRow()
polygon = arcpy.Polygon(array)
row.shape = polygon
row.setValue("Name", rast)
cursor.insertRow(row)
# 程序运行结束时间
endTime = time.time()
print ("The program run time is : %.02f seconds" % (endTime - startTime))
相关阅读
声明
1.本文所分享的所有需要用户下载使用的内容(包括但不限于软件、数据、图片)来自于网络或者麻辣GIS粉丝自行分享,版权归该下载资源的合法拥有者所有,如有侵权请第一时间联系本站删除。
2.下载内容仅限个人学习使用,请切勿用作商用等其他用途,否则后果自负。
手机阅读
公众号关注
知识星球
手机阅读
最新GIS干货
私享圈子