НА ГЛАВНУЮ СТРАНИЦУ

ГЕОПРИВЯЗКА ШЕЙП-ФАЙЛА

Часто встает вопрос о перепривязке шейп-файла, то есть векторных данных. Пользователи хотят "посадить" свои контура на место, так как им кажется, что они сидят бог знает где относительно основного набора данных на эту же территорию. Чего там голову ломать, ща подвинем всё в кучу, да и все! Только скажите, какие кнопки жать? В общем случае такой примитивный подход не будет корректным. Подумайте, может, ваши два набора просто были созданы в "разных проекциях"? Если их координаты в принципе разные, одни - миллионы метров, другие сотни-тысячи каких-то единиц, то скорее всего дело в проекциях. Почитайте внимательно об этом и займитесь настройкой. Для того, чтобы верно настроить проекцию для ваших новых данных, нужно ее знать или угадать. Дальше можно будет преобразовать одно к другому (точнее, ваши "затерянные" данные к мировой системе) с помощью штатных инструментов - в любом ГИСе они имеются. FAQ по проекциям можно найти здесь.

Если вам неоткуда знать проекцию ваших данных, то опять-таки не стоит бросаться все двигать лапой. Лучше сначала помучиться, поугадывать эту самую проекцию, ну, например, просто методом тыка. Решить, например, что у вас такая-то зона UTM и попробовать ее задать, поглядеть, как лягут данные в этом случае. Вариантов-то в общем, немного, если у вас не раритетный пергамент. Все наши топокарты, даже локальные, это по сути проекция Гаусса-Крюгера, а заграничные - UTM. Угадав хотя бы тип проекции, дальше можно заняться преобразованиями, например, привязывать аффинно. Честно говоря, я лично предпочитаю добиться еще бОльшего упрощения алгоритма "привязки" - чтобы исключить скос, например, а еще лучше и неравномерное масштабирование, и не возиться с поворотом, по возможности.

Если же проекцию вам угадать не удалось, стОит спросить совета на форуме, хотя бы на нашем. Обычно знатоки к таким вопросам относятся с пониманием, поскольку много сиживали над этим в своё время, и знают, насколько это бывает сложно без подсказки и опыта. Ну если и знатоки не помогли, или вы видите, что данные явно "ложатся друг на друга" без особых хитростей, просто сдвигом "кальки", то остается действительно по точкам посадить. Хотя проекции - увлекательное занятие, доложу я вам! Если вам кажется, что проекцию угадать можно, но вам лично не зватает опыта - ей-богу, присылайте образцы, поможем всем коллективом!

Случаи, как посадить по точкам, можно расклассифицировать на два вида, простой и сложный. Простой, когда для приемлемого результата достаточно аффинного преобразования (сдвиг, масштабирование, поворот и скос). Как правило, нужно 4 пары точек (можно больше). Инструментов для этого много, есть и штатные средства. Как правило, привязав векторный слой, даже с адекватным результатом, есть смысл вернуться к вопросу о проекции. Например, оценив параметры преобразования (сдвиг, масштаб) по точкам, подумать, что это за проекция может быть.

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

Далее надо определиться с ГИС-средой, в которой вы хотите привязывать ArcINFO, ArcView, ArcMap - почти в любой среде такие инструменты есть, либо в виде штатных средств, либо отдельные модули, ну или бесплатные скрипты имеются - выбирайте. Например, в среде Bentley это делает или Microstation (упрощенно, на плоскости), или Descartes (в полном объеме, с учетом проекций). В ArcMap - набор инструментов Spatial Adjustment (он входит в комплект ArcEditor).

В ArcView для этого очень удобен лаконичный и мощный модуль "Register and Transform" (transform.avx, Peter Girard, Boston ESRI). Инструмент умеет все, вплоть до полноценного аффинного преобразования, считает ошибки, выдает параметры преобразования, работает с базой точек и т.п. Может привязать и шейп-файл, и DWG.

Кроме того, для преобразования векторных слоев в кадовском стиле - поворот, смещение, масштабирование - можно пользоваться EdiTools (Yanko Chukanski). Этот популярный инструмент "не умеет" привязывать по точкам, и для преобразований требует указания конкретных параметров сдвига, вращения, масштаба. Откуда же их взять? Можно рассчитать вручную по точкам, а можно использовать в паре с Register and Transform. После набора точек в расчетной таблице, там же, где и ошибка измерения, он выдает значения необходимых параметров.

Инструмент Kenneth McWay (ShapeWarp), которые обычно с ходу рекомендуются знатоками неопытным пользователям, конечно, мощные, но несут заряд каких-то негисовских сил, то есть ничего не знают о проекциях, об уровнях преобразования, притом не помогают вовремя опомниться пользователю. В результате шейп легко разнести в лохмотья или выпучить сверх меры и не заметить этого. Это сильнодействующее средство явно для самых запущенных случаев. Применяйте осторожно!

Словом, я бы так подход сформулировал: "не надо усложнять уровень преобразования без необходимости". Лучше "выжать" из предыдущего уровня все по максимуму. Ведь, если шейп уже оцифрован в той же проекции, скорее всего он только сдвига и просит. Масштаб возможно при оцифровке был уже подобран, ну и поворот бывает тоже.

Lalex

Обсудить статью на форуме можно здесь