创建渔网工具

创建渔网(create  fishnet)工具是指创建由矩形像元组成的渔网。输出可以是折线或面要素。创建渔网需要三条基本信息:渔网的空间范围、行数和列数以及旋转的角度。要指定这些基本信息可通过多种方法。例如,您可能不确定准确的行数和列数,但却清楚每个矩形像元必须正好为 110 米乘 63 米,并且必须覆盖另一要素类的空间范围。

  • 可通过在模板范围参数中输入要素类或图层,或通过设置“输出坐标系”环境变量,来设置输出的坐标系。

  • 除了创建输出渔网外,如果将创建标注点参数设置为 LABELS(选中),则还会在每个渔网单元的中心创建一个包含标注点的新的点要素类。此要素类的名称以 _label 为后缀并与输出要素类相同,且创建于同一位置。

  • 几何类型参数用于选择是创建输出折线单元(默认)还是面单元。创建面渔网可能较慢,具体情况取决于行数和列数。

  • 单元宽度和单元高度值所用的单位与输出要素类定义的相同。

工具界面如下:

设置空间范围的方法

您可以通过以下任意一种方法设置渔网的范围:

  1. 在模板范围参数中输入现有数据集。此数据集的范围将用作渔网的范围。
  2. 如果未在模板范围参数中输入现有数据集,可提供最小 x 和 y 坐标值与最大 x 和 y 坐标值。
  3. 使用渔网原点坐标和渔网的右上角参数输入渔网原点和右上角的坐标。
  4. 在渔网原点坐标、像元宽度、像元高度、行数与列数参数中分别输入原点坐标、像元大小以及行数与列数。

设置行数和列数

如果您已通过上述前三种方法之一设置了渔网的范围,则接下来需要设置行数与列数。指定行数和列数的方法共有四种:

  1. 通过单元宽度和单元高度参数定义渔网单元的宽度和高度,然后将行数和列数参数留空或设置为 0。此工具执行时,将计算出覆盖渔网范围所需的行数和列数。
  2. 如上所述定义单元的宽度和高度,但另外还需要输入行数和列数。
  3. 通过设置行数和列数参数定义行数和列数,然后将单元宽度和单元高度参数留空或设置为 0。此工具执行时,将根据行数和列数以及渔网的右上角参数的值计算出渔网单元的宽度和高度。
  4. 如上所述定义行数和列数,但另外还需要输入单元大小和宽度。如果使用此方法,则参数渔网的右上角将被忽略(在本工具对话框中,此参数呈不可用状态)。此工具运行时会计算出右上角的坐标。

旋转角度

这是 Y 轴与连接渔网原点坐标与 Y 轴坐标点的线之间的角度。

要创建经过旋转的渔网,请指定 Y 轴坐标来定义旋转角度,从而使从原点和此点的线创建与正北方向所需形成的角度,如下图所示。有关详细信息,请参阅下方的计算 y 轴坐标的值部分。

确定渔网的旋转

下方示例显示出按照以下参数值构成的旋转后渔网:

  • 渔网原点坐标 = (0,0)
  • 渔网的右上角 = (6.9, 4)
  • 行数 = 3
  • 列数 = 4
  • Y 轴坐标 = (6.9, 4)

执行创建渔网时,首先会构造一个未经过旋转的渔网,如下图所示。

创建像元

下一步是绕原点将渔网顺时针旋转 60 度,获得最终的渔网。

渔网最终位置

计算 y 轴坐标的值

如果您知晓旋转角度,便可按照以下方法计算出 Y 轴坐标参数的值:

假设渔网要被顺时针旋转 60 度。从渔网的原点出发画一条与垂直轴顺时针成 60 度的线(如下图所示)。这条线上的任意一点都可作为“Y 轴坐标”参数的值。为 y 坐标选取一个合适的值,然后根据关系式计算出 x 坐标(假设原点位于 0,0):

角的正切 = x 坐标/y 坐标

渔网 Y 轴坐标点计算

例如,角度为 60 度。假设 y 坐标等于 10,则

x 坐标 = tan(60) * 10 = 1.732 * 10 = 17.32

y 轴坐标点为 (17.32,10)。

案例:创建一个渔网单元的宽度、高度为100的渔网。

# encoding: utf-8
import arcpy
arcpy.env.overwriteOutput = True
from arcpy import env
wg=r"D:\res\vector\wg1.shp"#网格文件位置
fc=r"D:\res\vector\dq.gdb\suzhoudq"#矢量文件
env.outputCoordinateSystem = arcpy.Describe(fc).spatialReference
fce=arcpy.Describe(fc)
ext = str(fce.extent.XMin) + " " + str(fce.extent.YMin) + " " + str(fce.extent.XMax) + " " + str(fce.extent.YMax)
print  ext
arcpy.CreateFishnet_management(wg,str(fce.extent.XMin) + " " + str(fce.extent.YMin),str(fce.extent.XMin) + " " + str(fce.extent.YMin+10) ,"100", "100", "0", "0",str(fce.extent.XMax) + " " + str(fce.extent.YMax), 'NO_LABELS', "#",'POLYGON')

print  "ok...."

参考资料:

http://desktop.arcgis.com/zh-cn/arcmap/10.3/tools/data-management-toolbox/create-fishnet.htm

http://desktop.arcgis.com/zh-cn/arcmap/10.3/tools/data-management-toolbox/how-create-fishnet-works.htm

  • 5
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值