Шейп из градусов в меркатор

0 голосов
спросил 13 Апр, 04 от bodom (660 баллов) в категории Программные продукты Esri
Продолжаю самообразование путём глупых вопросов...
У меня есть проект, созданный следующим чудесным образом: есть одна тема в формате Grid, являющая собой так сказать подстилающую поверхность. Все остальные темы - шейп-файлы, с координатами объектов в десятичных градусах. Параметры проекции - Transverse Mercator, центр. меридиан такой-то, остальные параметры 0,0,1,0, ну да это вроде не суть важно. Короче, проекция в метрах.
У меня такой вопрос - как можно сконвертить темы, которые в градусах, в метры?
Когда я делаю Преобразовать в шейп-файл и выскакивает вопрос, хочу ли я сохранить в единицах проекции или нет, вне зависимости от ответа получается какая-то ерунда, при попытке потом добавить тему на основании этого шейпа тема добавляется в виде какого-то пустого невидимого объекта (при этом в таблице атрибутов, скажем так, непусто)...
У меня от этих проекций крыша съедет - вроде всё так прозрачно, берёшь одни единицы, конвертишь в другие, а на деле...

4 Ответы

0 голосов
ответил 13 Апр, 04 от Гость (210,080 баллов)
В ArcView 3x нельзя держать в одном виде темы в разных проекциях. Поэтому то, что конвертировано, надо собирать в новом виде. Тогда все должно быть нормально. И помните, что конвертируется только выделение.
0 голосов
ответил 13 Апр, 04 от bodom (660 баллов)
Makes sense :)
Спасибо, попробую всё пересобрать заново. Просто тем немало, каждая со своими легендами, классификаторами... Я думал, получится им просто шейпы подменить, пока Арквью спит... image
0 голосов
ответил 14 Апр, 04 от Ilya (10,800 баллов)

Легенды и можно сохранить, а если им еще дать такоеже, как у шейпа имя, то они будут подгружаться сразу вместе с темой.

0 голосов
ответил 14 Апр, 04 от PAS (2,860 баллов)

Должно быть: эллипсоид Красовского СМ 0 1 500000 0

CM - центральный меридиан

или программно

  aPrj = TransverseMercator.Make(theView.ReturnExtent)
  aPrj.SetCentralMeridian(CM)
  aPrj.SetReferenceLatitude(0)
  aPrj.SetScale(1)
  aPrj.SetFalseEasting(500000)
  aPrj.SetFalseNorthing(0)
  aPrj.SetSpheroid(#SPHEROID_KRASOVSKY)
  aPrj.SetDescription (CM.AsString)

' Применяем проекцию для вида
theView.SetProjection(aPrj)

Сразу можно установить единицы карты

' Единицы проекции (Единицы карты, Map units)
aDisp = theView.GetDisplay
aDisp.SetUnits(#UNITS_LINEAR_METERS)
' Единицы расстояния
aDisp.SetDistanceUnits(#UNITS_LINEAR_METERS)

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