系列文章目录: ArcGIS自定义脚本工具
一、功能介绍
批量根据现有的要素(点、线、面)矢量文件(.shp)的范围生成扩大范围的矩形边界面要素文件(.shp)。扩大后面要素的坐标系与输入保持一致。输出矢量文件名格式(E_输入文件名.shp)
二、脚本代码
"""
@File : CreateRetangleSHP.py
@Author : salierib
@Time : 2022/7/2 10:47
@QQ group: 582151631
@Version:
"""
import arcpy
import os
import arcgisscripting
shps = arcpy.GetParameterAsText(0)
outdir = arcpy.GetParameterAsText(1)
spacing = arcpy.GetParameterAsText(2)
shps = shps.split(";")
spacing = float(spacing)
def extents(fc):
extent = arcpy.Describe(fc).extent
west = extent.XMin
south = extent.YMin
east = extent.XMax
north = extent.YMax
return west, east, south, north
def text_create(out_txt_path, msg):
txt_file = open(out_txt_path, 'w')
txt_file.write(msg)
def rec_msg(xMin, yMin, xMax, yMax, spacing=0.2):
x1, y1 = xMin - spacing, yMin - spacing
x2, y2 = xMin - spacing, yMax + spacing
x3, y3 = xMax + spacing, yMax + spacing
x4, y4 = xMax + spacing, yMin - spacing
return x1, y1, x2, y2, x3, y3, x4, y4
for shp in shps:
out_corr = arcpy.Describe(shp).spatialReference
basename = os.path.basename(shp)[:-4]
xMin, xMax, yMin, yMax = extents(shp)
x1, y1, x2, y2, x3, y3, x4, y4 = rec_msg(xMin, yMin, xMax, yMax,spacing=spacing)
msg = """Polygon
0 0
0 {0} {1} 1.#QNAN 1.#QNAN
1 {2} {3} 1.#QNAN 1.#QNAN
2 {4} {5} 1.#QNAN 1.#QNAN
3 {6} {7} 1.#QNAN 1.#QNAN
4 {0} {1} 1.#QNAN 1.#QNAN
END""".format(x1, y1, x2, y2, x3, y3, x4, y4, x1, y1)
out_txt = os.path.join(outdir, "E_%s.txt" % basename)
text_create(out_txt, msg)
gp = arcgisscripting.create()
inSep = "."
out_shp = os.path.join(outdir, "E_%s.shp" % basename)
gp.CreateFeaturesFromTextFile(out_txt, inSep, out_shp, out_corr)
三、工具参数
四、工具界面
五、使用例
1、根据陕西省的行政边界范围,生成扩大0.5°后的矩形边界范围
参数spacing设置为0.5,意味着矩形边界在根据原有的矢量文件范围向外扩展0.5°,运行前后的矢量文件如下所示:
2、根据宁夏在utm分带上的行政边界范围,生成扩大10km后的矩形边界范围
参数设置如下:
这里参数spacing设置为10000,意味着矩形边界在根据原有的矢量文件范围向外扩展10000m,即10km,运行前后的矢量文件如下所示: