GenerateOptimalCoordinateSystem

摘要

生成一个具有自定义投影坐标系的 SpatialReference 对象,该坐标系最适用于地图或分析的指定范围和预期目的。

由于无法将曲面投影到没有变形的平面上,因此存在各种在保留角度、面积、距离或方向之间折衷的地图投影。地图的预期目的和范围可以帮助确定要保留这些属性中的哪些属性。例如,可以为导航地图选择等角投影以保持方位角,或者可能需要投影保持面积以可视化或测量要素的相对大小。

语法

GenerateOptimalCoordinateSystem (extent, property, {custom_name})
参数说明数据类型
extent

感兴趣的范围。Extent 对象在诸如 WGS84 之类的地理坐标系中必须具有空间参考。

Extent
property

用于表示投影用途的属性。

  • EQUAL_AREA保持地球上每个地点的区域的相对面积。形状和距离将会变形。
  • CONFORMAL保持较小区域中的角度,因此形状的大部分都会被保持。大小和距离将会变形。
  • EQUIDISTANT_ONE_POINT通过投影中心进行测量时保持距离。区域、形状和其他距离将会变形。
  • EQUIDISTANT_MERIDIANS沿子午线测量时保持距离。区域、形状和其他距离将会变形。
  • COMPROMISE_WORLD不会专门保持区域、形状或距离,但会在这些几何属性之间建立平衡。仅在非常大的区域建议折衷投影。

并非所有要素都支持所有感兴趣范围。大比例范围仅支持 CONFORMALEQUIDISTANT_MERIDIANS 属性,并且全球范围仅支持 COMPROMISE_WORLD 属性。所有范围支持 EQUAL_AREAEQUIDISTANT_ONE_POINT 属性

String
custom_name

自定义投影坐标系的名称。如果未指定,则名称将为 Custom_Projection

String
返回值
数据类型说明
SpatialReference

一种具有自定义投影坐标系的 SpatialReference 对象,该坐标系最适用于指定范围和预期目的。

代码示例

GenerateOptimalCoordinateSystem 示例 1

创建自定义投影坐标系,以在要素类的范围内优化保留面积,然后将要素类投影到自定义投影坐标系。

import arcpy
# Input features in Projected Coordinate System
infc = r"C:\Projected.gdb\Colorado_Counties"
# Get extent of features
desc = arcpy.Describe(infc)
extent = desc.extent
# Project the extent to Geographic Coordinate System WGS84
gcs_sr = arcpy.SpatialReference(4326)
prj_extent = extent.projectAs(gcs_sr)
# Create custom projected coordinate system
custom_sr = arcpy.GenerateOptimalCoordinateSystem(prj_extent, "EQUAL_AREA",
                                                  "EQUAL_AREA_COLORADO")
# Project the input features to the custom projection
fc_prj = arcpy.management.Project(infc, "TestPoly_Projected", custom_sr)
GenerateOptimalCoordinateSystem 示例 2

创建一个简单的面对象并将其投影到具有等角属性的自定义投影坐标系。

import arcpy
gcs_sr = arcpy.SpatialReference(4326) # Create WGS84 spatial reference
# Create polygon
poly_info = [[20, 20], [20, 60], [60, 60], [60, 20], [20, 20]]
poly_pts = arcpy.Array([arcpy.Point(*coords) for coords in poly_info])
poly = arcpy.Polygon(poly_pts, gcs_sr)
# Create extent object from polygon
extent = poly.extent
# Create custom projected coordinate system
custom_sr = arcpy.GenerateOptimalCoordinateSystem(extent, "CONFORMAL")
# Project the polygon to the custom projection
poly_prj = poly.projectAs(custom_sr)

相关主题