Настройка пространственной привязки курсора

Пространственная привязка для класса объектов описывает его систему координат, пространственный домен и точность.

По умолчанию пространственная привязка области, возвращаемая курсором поиска совпадает с классом объектов, созданным курсором. Пространственную привязку можно задать также для курсора обновления или вставки.

При настройке пространственной привязки для курсора обновления или вставки определяется пространственная привязка области, в которую будет производиться запись курсором. Предположим, что предполагается вставить геометрические данные в класс объектов с системой координат UTM. Нужно считать геометрические данные из текстового файла, содержащего государственные координаты, и вставить их в этот класс объектов. Пространственная привязка класса объектов (UTM) отличается от пространственной привязки геометрических данных, считываемых из файла (государственной). При открытии курсора вставки на классе объектов нужно выбрать государственную пространственную привязку и указать, что вставляемые геометрические данные нужно конвертировать из государственной системы координат в UTM. Поэтому настраивать пространственную привязку курсора вставки или обновления нужно только в случае, если пространственные привязки записываемых геометрических данных и класса объектов курсора отличаются.

В случае курсора поиска, указание пространственной привязки, отличающейся от пространственной привязки класса объектов курсора, приводит к трансформации геометрических данных к пространственной привязке курсора.

В следующем примере содержится точечный класс объектов с системой координат северной зоны 21 UTM, указанной в его пространственной привязке. Скрипт формирует текстовый файл, содержащий координаты точек в десятичных градусах.

import arcpy

# Describe a feature class with a geographic coordinate system
#
desc = arcpy.Describe("d:/base/data.gdb/latlongbnd")

# Create search cursor. Use the spatial reference object from the
#   described feature class so geometries are returned in decimal degrees.
#
rows = arcpy.da.SearchCursor("d:/base/data.gdb/buildings", ["SHAPE@"], 
                             spatial_reference=desc.spatialReference)

# Open the file for output. This also creates the file if it does not exist.
#
out = open(arcpy.GetParameterAsText(0), "w")

# Print the coordinates of each building point feature
#
for row in rows:
    # Get the geometry's point object.
    #
    pnt = row[0].getPart()

    # Write the x,y coordinate to the output file
    #
    out.write(pnt.X + ";" + pnt.Y + "\n")

# Close the output file
#
out.close()

Связанные темы

9/11/2013