9 处理 几何图形(2)

感觉本章的内容对于我这种本科时候编程学习基础较差的人,还是较难理解的,原理还好说,大部门都能懂,但是代码等,很容易记不住。还是只能先了解一下,等以后实际应用中用到了,再深入学习。

9.5 多部件要素

要素类中的要素可以具有多个部分,从而使它们成为多部分要素。当一个特征有多个物理部分但只有一组属性时,有时需要这些特征。多部分要素的一个典型示例是夏威夷州:每个岛屿都是其自己的一部分,但要在属性表中将夏威夷显示为单个记录,这些部分必须形成一个要素。

在这里插入图片描述
在点的情况下,这些特征被称为多点,在折线和多边形的情况下,它们被称为多部分。要确定一个要素是否是多部分的,使用几何对象的 isMultipart 属性。如果部件数量多于一个,则该属性返回 True 值。几何对象的 partCount 属性返回特征的几何部分的数量。但是,当要素类包含多部分要素时,并不意味着要素类中的每个要素都是多部分的。这就是为什么 isMultipart 和 partCount 等属性是几何对象(即每个单独的要素)而不是整个要素类的属性的原因。

使用多部分几何的语法类似于单部分特征的语法。主要区别在于,对于多部分特征,每个特征都返回一个包含多个 Point 对象数组的数组,而不是单部分特征的单个 Point 对象数组。因此,使用几何图形的脚本不仅必须遍历表格的行,还必须遍历每个几何对象的各个部分,然后遍历每个几何部分的 Point 对象数组。
以下示例代码说明了如何为折线和面要素类完成此迭代:

import arcpy
arcpy.env.workspace = "C:/Data/Demo.gdb"
fc = "multipart_features"
with arcpy.da.SearchCursor(fc, ["OID@", "SHAPE@"]) as cursor:
       for row in cursor:
         print("Feature {0}: ".format(row[0]))
         partnum = 1
         for part in row[1]:
             print("Part {0}:".format(partnum))
             for point in part:
                  print("{0}, {1}".format(point.X, point.Y))
             partnum += 1

此脚本适用于单部分和多部分功能。对于单部件特征,部件数量为 1,第二个 for 循环中的代码块对每个几何对象只运行一次。对于多部分特征,第二个 for 循环中的代码块对每个部分重复。此脚本适用于折线和面要素类,但不适用于点要素类。
早期的脚本使用 getPart(0) 将迭代限制为仅两次:第一次迭代对要素类的折线或多边形要素(或记录),第二次迭代针对每个要素的单个 Point 对象数组.此迭代仅在没有多部分特征的假设下有效。但是,当可能存在多部分要素时,脚本还必须遍历每个要素的各个部分。
当应用于前面示例中使用的单部分管道要素类时,输出如下:

Feature 1:
Part 1:
3114489.914429754, 10071031.541552678
3114455.196651429, 10071041.880114675
Feature 2:
Part 1:
3114457.9210554212, 10071051.170778498
3114455.196651429, 10071041.880114675
Feature 3:
Part 1:
3114455.196651429, 10071041.880114675
3114435.4978719205, 10071047.747557

该脚本打印特征 ID 和零件编号,后跟每个零件的顶点。对于单部分特征,部分编号将始终为 1。但是,当脚本在多部分特征上运行时,每个部分中的顶点将单独打印。例如,当脚本应用于夏威夷州的一个要素类时,其中所有岛屿都是一个多部分要素的一部分,输出如下:

Feature 1:
Part 1:
829161.2377500497, 2245088.4863696164
829562.0140070709, 2244825.5500601856
830272.0191802941, 2245082.653893076
...
Part 2:
757434.8462445247, 2276341.3831276996
757032.135862602, 2276024.285794495
756636.4266655683, 2276085.913662538
...
Part 3:
710001.6202032189, 2315999.2709145965
712130.1452008054, 2315404.376263119
712929.5685427614, 2315461.879625261
...
...
Part 11:
448104.910351872, 2455572.1504373224
449256.0443817233, 2455521.0768535445
449660.53156614857, 2456094.041689389
...

夏威夷要素类总共由 1 个要素和 11 个部分组成。
注意:折线或面要素可以有许多折点,因此在大型要素类上运行脚本时要小心 - 打印所有折点可能需要很长时间,您可以选择只打印几个折点。您可以通过在第三个循环中添加一个计数器并使用 if 语句仅在达到特定数量之前打印顶点来限制顶点的数量。您还可以使用 while 循环代替 for 循环,这有助于使用计数。

9.6 复杂多边形(带孔的多边形)polygons with holes

除了多部分特征外,带孔的多边形在处理几何图形时提出了独特的挑战。如果多边形包含孔,几何对象将由多个环组成:一个外环和一个或多个内环。环是定义二维区域的闭合路径。路径是一系列具有起始顶点 (from) 和结束顶点 (to) 的顶点。有效环由有效路径组成,其中起点和终点具有相同的 x,y 坐标。外环定义为顺时针环,内环定义为逆时针环。这个约定是为了保持环分开,但方向没有其他意义。此特性是不同形式的折线,其中方向用于建立属性,例如通过网络的流动方向。
对于带孔的多边形,几何对象返回一个数组,其中包含描述外环和所有内环顶点的 Point 对象。始终首先返回外环,然后是内环。空点(即没有值的 Point 对象)用作环之间的分隔符。
读取带孔多边形几何的脚本类似于上一节中用于多部分要素的脚本。第三个 for 循环被一个检查空点出现的代码块所取代。以下是完整的脚本。

import arcpy
arcpy.env.workspace = “C:/Data/Demo.gdb”
fc = “polygon_holes”
with arcpy.da.SearchCursor(fc, [“OID@”, “SHAPE@”]) as cursor:
    for row in cursor:
    print(“Feature {0}:.format(row[0]))
    partnum = 1
         for part in row[1]:
         print(“Part {0}:.format(partnum))
           for point in part:
              if point:
                 print({0}, {1}.format(point.Y, point.Y))
              else:
                 print(“Interior Ring”)
           partnum += 1

唯一的添加由 if-else 语句组成。对于带有环的几何对象,空点用作环之间的分隔符。因此,如果空点之后的下一个对象是点对象,则表示存在内环。此代码块针对每个空点分隔符运行,导致每个内环的顶点被单独列出。
带孔的多边形很常见,尤其是在描述自然特征的要素类中,例如植被和土壤。图中的示例说明了一个典型的土壤多边形。
在这里插入图片描述
在土壤多边形上运行脚本会产生以下输出。只有一个特征(特征 1)具有一个外环(第 1 部分)和多个内环。在此示例中,环没有编号。输出如下:

Feature 1:
Part 1:
549563.387926 1623728.65919
549615.387903 1623700.65924
...
Interior Ring
547042.700688 1625044.65659
546906.386611 1624984.65647
...
Interior Ring
548234.35805 1621938.65839
548210.169534 1621866.65838
...
Interior Ring
546255.274993 1623827.6562
546215.180853 1623815.65616
...

考虑到目前讨论的一些挑战,读取处理所有可能场景的要素类的几何图形的单个脚本变得复杂。这样的脚本必须考虑: **(1) 几何类型——即点与折线或多边形特征; (2) 多部分特征的存在; (3) 存在带孔的多边形。**该脚本需要多个 if-else 语句,并使用单独的代码块来处理这些挑战。

9.7 几何图形写入

如前一节所述,可以使用 ArcPy 的几何类创建几何对象。本节介绍如何使用这些几何对象编写新功能。在典型情况下,顶点的坐标是从单独的文件中获取的。
使用 arcpy.da 模块的 InsertCursor 类创建新功能。此过程需要创建几何对象,然后使用 insertRow() 方法将结果保存为特征。这些步骤建立在前面讨论如何创建几何对象的部分之上。考虑前面创建点几何对象的示例:

point = arcpy.Point(4.900160, 52.378424)
pointgeo = arcpy.PointGeometry(point, 4326)

这里需要 PointGeometry 类,部分是为了给 Point 对象分配一个坐标系。但是,在使用插入光标时,隐含的假设是要素类已经存在,因此不需要 PointGeometry 类。如果要素类不存在,则 CreateFeatureclass() 函数可以创建一个新的空要素类。该函数的语法如下:

CreateFeatureclass(out_path, out_name, {geometry_type}, {template},
                                {has_m}, {has_z}, {spatial_reference},
                               {config_keyword}, {spatial_grid_1},
                               {spatial_grid_2}, {spatial_grid_3})

唯一需要的参数是新要素类(文件夹或地理数据库)的位置路径和新要素类的名称。几何图形的默认值为多边形。空间参考没有默认值,所以如果没有指定,坐标系是“未知的”。以下代码示例创建一个新的空要素类并添加一个新的点要素:
import arcpy

fgdb = "C:/Data/Demo.gdb"
arcpy.env.workspace = fgdb
fc = "newpoints"
arcpy.CreateFeatureclass_management(fgdb, fc, "Point",
             "", "", "", 4326)
point = arcpy.Point(4.900160, 52.378424)
with arcpy.da.InsertCursor(fc, "SHAPE@") as cursor:
      cursor.insertRow([point])

CreateFeatureclass() 函数使用正确的几何类型和坐标系创建一个新的空要素类。从 Point 对象创建几何对象不需要 PointGeometry 类,因为在此要素类上设置插入光标时空间参考是隐式的。

这种方法仅适用于点要素,因为它们相对于折线和多边形来说很简单。使用插入光标创建新的折线或多边形要素时,应分别使用折线或多边形类来创建几何对象。

在新要素类上设置插入光标后,通过调用光标对象的 insertRow() 方法创建新点要素。这是 InsertCursor 类的唯一方法。如果未提供参数,则会添加一个没有几何或属性值的空行。在示例脚本中,参数是一个 Point 对象,它创建新的点要素。 Point 对象必须以列表或元组的形式提供。几何将写入要素类,但如果要素类包含任何其他字段,则不会更新任何属性值。因此,填充的唯一属性是 OBJECTID 字段(即值 1)和几何字段(即 Point)。

因为点特征相对简单,所以可以使用 SHAPE@XY 几何标记代替几何对象 SHAPE@。除了光标对象之外,前面的示例代码是相同的:

with arcpy.da.InsertCursor(fc, "SHAPE@XY") as cursor:

使用此几何标记会产生完全相同的结果并提高性能。使用几何标记创建新几何是仅用于处理点要素的选项。创建新的折线或多边形要素始终需要整个几何对象 SHAPE@。

创建新特征通常是使用插入光标完成的,如前面的示例所示。有一些替代解决方案不需要使用游标。考虑前面在内存中创建新几何对象的示例:

point = arcpy.Point(4.900160, 52.378424)
pointgeo = arcpy.PointGeometry(point, 4326)

由于几何对象可用作地理处理操作的输入,因此几何对象可用于将输入复制到新要素类的工具中,例如复制要素工具。该工具的一般语法如下:

CopyFeatures(in_features, out_feature_class, {config_keyword},
                              {spatial_grid_1}, {spatial_grid_2}, {spatial_grid_3})

要创建新要素,将几何对象或对象用作输入要素,并将这些对象复制到新的输出要素类。这种编写几何图形的方法不需要使用光标。该任务的代码如下:

import arcpy
arcpy.env.workspace = "C:/Data/Demo.gdb"
point = arcpy.Point(4.900160, 52.378424)
pointgeo = arcpy.PointGeometry(point, 4326)
arcpy.CopyFeatures_management(pointgeo, "points")

此代码是创建新特征的简洁优雅的方法,同样的方法可用于折线和多边形特征。与使用光标相比,以这种方式复制几何对象有一些缺点。首先,在复制几何图形时,您无法创建或更新要素的属性。因此,如果必须同时创建新要素和属性值,则必须使用游标。其次,创建许多要素,特别是如果它们包含许多折点,可能会降低性能,因为所有几何对象必须同时加载到内存中才能将它们复制到要素类。使用游标时,您可以在游标对象上的每次迭代中创建每个新特征,这样可以在处理许多特征时获得更好的性能。

到目前为止讨论的两种方法(即将几何对象复制到要素类并使用插入光标)也适用于折线和面要素。考虑一个从 x,y 坐标对列表创建新多边形特征的脚本。因为坐标是以列表的形式提供的,所以脚本必须遍历列表,为每个坐标对创建一个 Point 对象,并将这些 Point 对象添加到一个 Array 对象中。该过程需要设置一个空的 Point 对象和一个空的 Array 对象,如下所示:

import arcpy
point = arcpy.Point()
array = arcpy.Array()
coordinates = [[3116036.11, 10071403.50],
                        [3115768.36, 10071482.07],
                      [3115847.82, 10071747.21],
                      [3116114.23, 10071667.17]]

接下来,代码对坐标对列表进行迭代,并在每次迭代时创建一个新的 Point 对象。每个 Point 对象都添加到 Array 对象中:

for coord in coordinates:
             point.X = coord[0]
            point.Y = coord[1]
           array.add(point)

最后,使用 Array 对象作为输入并设置空间参考来构造几何对象:

polygon = arcpy.Polygon(array, 2277)

到目前为止,脚本只在内存中创建了几何对象。要在要素类中创建新的面要素,可以使用之前用于点要素的两种解决方案。第一个解决方案是使用插入游标。此过程需要创建一个新的多边形要素类,将插入光标设置在几何对象 SHAPE@ 上,并使用 insertRow() 方法写入新几何。完整的解决方案如下:

import arcpy
fgdb = "C:/Data/Demo.gdb"
fc = "newpoly"
arcpy.env.workspace = fgdb
point = arcpy.Point()
array = arcpy.Array()
coordinates = [[3116036.11, 10071403.50],
              [3115768.36, 10071482.07],
              [3115847.82, 10071747.21],
              [3116114.23, 10071667.17]]
for coord in coordinates:
     point.X = coord[0]
     point.Y = coord[1]
     array.add(point)
polygon = arcpy.Polygon(array)
arcpy.CreateFeatureclass_management(fgdb, fc, "Polygon",
                                       "", "", "", 2277)
with arcpy.da.InsertCursor(fc, "SHAPE@") as cursor:
        cursor.insertRow([polygon])

请注意,在此解决方案中,空间参考是在创建新要素类时设置的,而不必在创建几何对象时设置。结果是一个新的多边形特征,如图所示,顶点显示为强调。
在这里插入图片描述
第二种解决方案是使用复制要素工具复制几何对象而不使用光标。
完整的解决方案如下:

import arcpy
arcpy.env.workspace = "C:/Data/Demo.gdb"
fc = "newpoly"
point = arcpy.Point()
array = arcpy.Array()
coordinates = [[3116036.11, 10071403.50],
                    [3115768.36, 10071482.07],
                   [3115847.82, 10071747.21],
                   [3116114.23, 10071667.17]]
for coord in coordinates:
      point.X = coord[0]
      point.Y = coord[1]
      array.add(point)
polygon = arcpy.Polygon(array, 2277)
arcpy.CopyFeatures_management(polygon, fc)

在此解决方案中,必须为几何对象设置空间参考,因此它是创建多边形对象时参数的一部分。
在到目前为止的示例中,坐标信息被硬编码到脚本中。一种常见的情况是坐标驻留在单独的文件中,例如数据库表或文本文件。以下示例从文本文件中读取坐标。文本文件列出了 21 个点,每个点都以一个 ID 号开头,后跟一个 x 坐标和一个 y 坐标。这三个值用空格隔开。这些坐标存储在名为 points.txt 的纯文本文件中。
在这里插入图片描述
这些坐标将用于创建一个新的多边形——注意列表中第一个点和最后一个点的坐标是相同的:1 542935 1619969 和 21 542935 1619969。
此任务的脚本解决方案类似于前面创建多边形的示例,但使用 fileinput 模块来读取文本文件的内容。脚本的第一部分类似于前面的示例,如下所示:

import arcpy
import fileinput
fgdb = "C:/Data/Demo.gdb"
textfile = "C:/Data/points.txt"
fc = "lake"
sr = arcpy.SpatialReference(2236)
arcpy.env.workspace = fgdb
arcpy.CreateFeatureclass_management(fgdb, fc, "Polygon",
                                                                             "", "", "", sr)
with arcpy.da.InsertCursor(fc, ["SHAPE@"]) as cursor:
       array = arcpy.Array()
       point = arcpy.Point()

唯一的添加是导入 fileinput 模块,指向输入文本文件,并将坐标系设置为变量。
接下来,必须使用文本文件中的值设置 Point 对象的属性。此步骤需要 fileinput 模块读取文本文件,并使用 split() 方法将文本解析为点 ID 号、x 坐标和 y 坐标的单独字符串。该脚本必须遍历输入文本文件的行,为每一行创建一个 Point 对象,并将每个 Point 对象添加到 Array 对象。
这些代码行如下:

for line in fileinput.input(textfile):
point.ID, point.X, point.Y = line.split()
array.add(point)

split() 方法使用方法的参数作为分隔符返回一个字符串列表。当没有指定参数时(就像这里的情况), split() 方法使用连续的空格作为分隔符。对于每一行,split() 方法返回三个字符串的列表。然后将这些值分配给 Point 对象的 ID、X 和 Y 属性。

最后几行代码从 Point 对象数组创建 Polygon 对象并创建多边形特征。关闭文本文件以避免任何数据锁定,如下所示:

polygon = arcpy.Polygon(array)
cursor.insertRow([polygon])
fileinput.close()

脚本的结果是一个名为“湖”的新要素类,其中包含一个多边形要素,如图所示。
在这里插入图片描述

脚本解决方案使用光标创建新的面要素,但将几何对象复制到新要素类的替代解决方案同样有效。

9.8 使用游标(cursors)设置空间参考

要素类的空间参考描述了坐标系、空间域和精度。空间参考通常在创建要素类时设置,如前面的示例所示。但是,不需要指定空间参考,如果没有指定,则会导致“未知”坐标系。在这种情况下,定义投影工具可用于记录要素类创建后的坐标系信息。

空间参考适用于要素类中的所有要素。因此,默认情况下,从光标返回的对象几何的空间参考与光标打开的要素类的空间参考相同。但是,在某些情况下,您可能正在使用与要素类具有不同空间参考的几何 - 例如,如果您在州平面坐标系中有一个要素类,并且您想使用文本文件插入新要素具有通用横轴墨卡托 (UTM) 坐标。在这种情况下,您可以在插入光标上设置空间参考以确保正确转换。您将在要素类上打开一个插入光标并将光标的空间参考设置为 UTM,从而声明要插入的几何必须从 UTM 转换为状态平面。

您还可以设置搜索光标的空间参考。指定与要素类空间参考不同的空间参考会导致几何转换为光标的空间参考。

考虑在州平面坐标中使用点要素类并编写脚本以十进制度数导出点要素的 x,y 坐标对的示例。 SearchCursor 类在要素类的州平面坐标上建立只读光标,但此光标的空间参考设置为所需的地理坐标系,以十进制度为单位。使用以下代码设置空间参考:

import arcpy
arcpy.env.workspace = "C:/Data"
mytext = "C:/Data/result.txt"
fc = "hospitals.shp"
prjfile = "C:/Projections/GCS_NAD_1983.prj"
sr = arcpy.SpatialReference(prjfile)
with arcpy.da.SearchCursor(fc, ["SHAPE@"], "", sr) as cursor:

接下来,使用 open() 函数创建一个输出文件。此函数以写入模式(“w”)打开文件,以便可以向其中写入新的文本行,如下所示:

output = open("result.txt", "w")

下一步是遍历行,为每一行创建一个几何对象,并使用 write() 方法将 x,y 坐标写入输出文件。这部分代码如下:

for row in cursor:
      point = row[0]
     output.write(f"{point.X} {point.Y}\n")

坐标以十进制度数形式写入字符串中,点要素的坐标用空格隔开,并用换行符 (\n) 以新行开始每对坐标。最后一步是使用 close() 方法关闭输出文件。完整代码如下:

import arcpy
arcpy.env.workspace = "C:/Data"
mytext ="C:/Data/result.txt"
fc = "hospitals.shp"
prjfile = "C:/Projections/GCS_NAD_1983.prj"
sr = arcpy.SpatialReference(prjfile)
with arcpy.da.SearchCursor(fc, ["SHAPE@"], "", sr) as cursor:
      output = open(mytext, "w")
     for row in cursor:
          point = row[0]
          output.write(f"{point.X} {point.Y}\n")
    output.close()

在此示例中,空间参考是使用现有投影文件 (.prj) 设置的,但也可以从现有要素类或使用工厂代码获取。
注意:虽然在光标上设置空间参考可用于将几何图形从一个坐标系转换到另一个坐标系,但它并不可靠。不会自动考虑设置任何必要的基准面转换,并且需要在脚本中作为环境的一部分进行设置。

9.9 使用几何对象与地理处理工具一起工作

地理处理工具的输入通常由要素类组成。但是,有时这些要素类还不存在,必须根据几何信息创建。在这种情况下,您可以创建一个新要素类,使用光标填充该要素类,然后在地理处理工具中使用该要素类。但是,此工作流程可能会变得很麻烦。正如本章前面所讨论的,另一种方法是使用几何对象而不是临时要素类来简化地理处理。本节将更详细地检查此替代方案。

例如,以下代码从坐标列表创建几何对象列表,然后将几何对象用作缓冲区工具的输入,如下所示:

import arcpy
arcpy.env.workspace = "C:/Data"
coordlist = [[523017.4, 4260650.0],
                  [523125.8, 4260732.6],
                  [523084.1, 4260787.2]]
#创建空列表存储几何
pointlist = []
#投影
sr = arcpy.SpatialReference("NAD 1983 UTM Zone 10N")
#创建point对象并创建几何对象
for x, y in coordlist:
      point = arcpy.Point(x,y)
     pointgeometry = arcpy.PointGeometry(point, sr)
     pointlist.append(pointgeometry)
arcpy.Buffer_analysis(pointlist, "buffer.shp", "10 METERS")

在示例代码中,几何对象被创建为 Point 对象的列表。首先,使用 pointlist = [] 创建一个空列表来存储几何对象。在 for 循环中,坐标对列表用于使用 Point 类创建 Point 对象。 PointGeometry 类使用这些对象来创建具有空间参考的几何对象,这些对象将附加到列表中。此几何对象列表成为缓冲区工具的输入。另一种方法是首先根据坐标列表创建一个要素类,但如果此要素类对于其他任何事情都不是必需的,则使用几何对象将产生更高效的代码。除了最终所需的结果外,没有文件被写入输出。
几何对象也可以直接创建为地理处理工具的输出。例如,以下代码使用几何对象作为复制要素工具的输出。结果是一个几何对象列表,可用于确定某些属性,如下所示:

import arcpy
fc = "C:/Data/roads.shp"
geolist = arcpy.CopyFeatures_management(fc, arcpy.Geometry())
length = 0
for geometry in geolist:
     length += geometry.length
print(f"Total length: {length}")

使用几何对象可以提高代码的效率,因为它避免了创建临时要素类和使用光标读取所有要素的步骤。

Points to remember

Points, polylines, and polygons are examples of geometry objects. You can work with geometry objects and their properties by setting a cursor on the Shape field of a feature class. You can work with the full geometry object (i.e., SHAPE@), including all its properties such as length and area, but you also can use geometry tokens (e.g., SHAPE@XY) as shortcuts to specific properties.

Geometry objects often are used to carry out tasks in memory instead of creating a new temporary feature class or modifying existing feature classes.

Reading geometries can be accomplished using a search cursor. Specific approaches are necessary to read the properties of multipart features and polygons with holes.

ArcPy includes several classes to work with geometry objects. The most basic is the Point class,which is the equivalent of a single vertex and is used to create all other geometry objects. Polyline and polygon features consist of multiple vertices and are constructed using two or more Point objects.

New features can be created using an insert cursor on a feature class or by using a geoprocessing tool to copy geometry objects to a new feature class. Features are constructed from vertices, which are created using Point objects. Coordinates can be entered directly into a script or read from a file to create Point objects. To create polyline and polygon features, multiple Point objects are combined into an Array object.

The spatial reference can be set on cursors to work with geometries in a coordinate system that isdifferent from that of the feature class.

点、多段线和多边形是几何对象的示例。您可以通过在要素类的 Shape 字段上设置光标来处理几何对象及其属性。您可以使用完整的几何对象(即 SHAPE@),包括其所有属性,例如长度和面积,但您也可以使用几何标记(例如 SHAPE@XY)作为特定属性的快捷方式。

几何对象通常用于在内存中执行任务,而不是创建新的临时要素类或修改现有要素类。
可以使用搜索光标来读取几何图形。需要特定方法来读取多部分要素和带孔的多边形的属性。

ArcPy 包含几个用于处理几何对象的类。最基本的是 Point 类,它相当于单个顶点,用于创建所有其他几何对象。折线和面要素由多个顶点组成,并使用两个或多个 Point 对象构建。

可以使用要素类上的插入光标或使用地理处理工具将几何对象复制到新要素类来创建新要素。要素由顶点构成,这些顶点是使用 Point 对象创建的。坐标可以直接输入脚本或从文件中读取以创建点对象。为了创建折线和多边形特征,将多个 Point 对象组合成一个 Array 对象。

可以在光标上设置空间参考,以使用与要素类不同的坐标系中的几何图形。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值