Проецирование в ModelBuilder

0 голосов
спросил 09 Ноя, 11 от youthland66 (240 баллов) в категории Программные продукты Esri
    Здравствуйте!
У меня задачка такова.
Дано:
Полигональный класс объектов. ГСК Пулково 1942. Экстент: от Калининграда до Чукотки. В атрибутивной таблице имеется текстовое поле, содержащее параметры системы координат для каждого объекта: GK_Pulkovo_1942, без знака зоны, с центральным меридианом, проходящим через центроид каждого полигона.
Требуется:
Спроецировать каждый объект в "свою", указанную в атрибутике СК, с сохранением его (объекта) в виде отдельного класса объектов.
Похожее, НО С ТОЧНОСТЬЮ НАОБОРОТ есть в Help'е "Iterate MultiValue": http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#/Examples_of_using_iterators_in_ModelBuilder/00400000001n000000/ESRI_SECTION1_9A6D07FF69AE4A379CFC9031B128ACFD.
Буду признателен за любую помощь.

7 Ответы

0 голосов
ответил 13 Ноя, 11 от Grigoriy (127,020 баллов)
количество объектов Вы можете посчитать?
У Вас пока основная задача - не перепроецировать объекты, а присвоить каждому объекту его собственную СК. Т.е. Вы хотите на выходе получить столько классов объектов (таблиц), сколько у Вас самих объектов (полигонов)?
Боюсь эта задача не для ModelBuilder и вообще трудно решаема, поскольку смысла не имеет. Что Вы потом хотите делать с этими классами объектов?
    
0 голосов
ответил 14 Ноя, 11 от youthland66 (240 баллов)
Здравствуйте, Григорий!
Главная цель состоит в том, чтобы максимально точно определить площадь каждого полигонального объекта в м2.
Насколько я понимаю, такую величину можно получить, если в параметрах СК задан центральный меридиан, проходящий через центроид объекта.

На данный момент уже отработана часть модели, которая из исходного класса полигональных объектов, содержащего около 500 объектов, создает такое же количество классов объектов, содержащих один объект.
Все эти классы объектов имеют Geographic Coordinate System: GCS_Pulkovo_1942, Datum: D_Pulkovo_1942, и в текстовом поле уже содержат параметры Projected Coordinate System

PROJCS[Pulkovo_1942_GK,GEOGCS[GCS_Pulkovo_1942,DATUM[D_Pulkovo_1942,SPHEROID[Krasovsky_1940,6378245.0,298.3]],
PRIMEM[Greenwich,0.0],UNIT[Degree,0.0174532925199433]],
PROJECTION[Gauss_Kruger],PARAMETER[False_Easting,500000.0],PARAMETER[False_Northing,0.0],PARAMETER[Central_Meridian,0.0],PARAMETER[Scale_Factor,1.0],PARAMETER[Latitude_Of_Origin,0.0],UNIT[Meter,1.0]]

Как видно из данного текста из "PARAMETER[False_Easting,500000.0]" убран знак зоны.
В "PARAMETER[Central_Meridian,0.0]" значение "0.0" заменено на значение меридиана, проходящего через центроид соответствующего объекта.

На выходе модели должна быть таблица, не обязательно класс объектов, в которой помимо ID будет как раз значение площади.
Создать сводную таблицу по классам объектов и заданным полям - не проблема.

Проблема в том, как задать переменную для инструмента "Project", используя данные проекции из атрибутики, чтобы на выходе имелся набор спроецированных классов объектов, каждый в свою СК?
    
0 голосов
ответил 15 Ноя, 11 от Grigoriy (127,020 баллов)
В данном случае Вам гораздо проще использовать не ModelBuilder, а скрипт на Python. Который курсором пройдет по записям и выполнит нужные вычисления. Это будет быстрее и правильнее.
А для расчета площади может Вас просто устроит какая-нибудь равноплощадная проекция. Перепроецируйте весь класс в неё и проверьте на двух-четырех полигональных объектах результат - может он Вас устроит.

    
0 голосов
ответил 15 Ноя, 11 от youthland66 (240 баллов)
Спасибо. Похоже без "удава" не обойтись.
0 голосов
ответил 16 Ноя, 11 от peter1 (7,760 баллов)
Может руками быстрее спроецировать 500 объектов, если задача разовая.
0 голосов
ответил 17 Ноя, 11 от youthland66 (240 баллов)
В том-то и дело, что границы объектов время от времени корректируются.
Но вопрос-то по поводу переменной для инструмента "Project" остается.
0 голосов
ответил 22 Ноя, 11 от Grigoriy (127,020 баллов)
Ещё раз советую всё-таки проверить какую-нибудь равноплощадную глобальную проекцию.

Если всё же решились проецировать каждый объект, то лучше написать скрипт. Тем более, если данные меняются.
Создаете модель с инструментом project и экспортируете в питон - это будет "тело" скрипта.

Если нужна модель, то вот она - можете пробовать.
Но у Вас должна быть таблица с двумя столбцами - в одном путь к классу объектов, который Вы проецируете, в другом - полный путь к файлу с системой координат.
Т.е. Вам нужно сначала создать из Вашей существующей таблицы, кроме классов объектов, ещё файлы с проекциями, и положить их в правильное место:
"c:\Program Files\ArcGIS\Desktop10.0\Coordinate Systems\Projected Coordinate Systems\World\ Azimuthal Equidistant (world).prj"
image
20111122_133302_prj_batch.zip

За модель - спасибо Александру Леонову.
Добро пожаловать на сайт Вопросов и Ответов, где вы можете задавать вопросы по GIS тематике и получать ответы от других членов сообщества.
...