Как получить высоту в точке (ArcGis Engine 9.3)

ArcGIS 8.x,9.x,10.x (Arcview, ArcEditor, Arcinfo).
gamm
Гуру
Сообщения: 4170
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1107
Ваше звание: программист
Откуда: Казань

Re: Как получить высоту в точке (ArcGis Engine 9.3)

Сообщение gamm »

Dmitry_NIC писал(а):От Панорамы заставило уйти требование заказчика, что надо использовать шэйп-формат карт :)
а что вам мешает взять последний GDAL, в котором говорят есть конвертер Shape<=>SXF (или самим написать такой конвертер)? Или использовать любой GDAL, который читает Shape, и просто переделать немного свой код (тем более, что модель данных та же самая, и с логической точки зрения Shape и SXF - одно и то же)?
Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 792
Ваше звание: званий не имею
Откуда: Москва

Re: Как получить высоту в точке (ArcGis Engine 9.3)

Сообщение Александр Мурый »

Действительно, можно подумать, что в 2011-м году shape-файлы читаются и пишутся только в аркгисе..
Редактор материалов, модератор форума
Аватара пользователя
Дмитрий Барышников
Гуру
Сообщения: 2572
Зарегистрирован: 17 ноя 2009, 19:17
Репутация: 261
Откуда: Москва

Re: Как получить высоту в точке (ArcGis Engine 9.3)

Сообщение Дмитрий Барышников »

Dmitry_NIC писал(а):От Панорамы заставило уйти требование заказчика, что надо использовать шэйп-формат карт
С этого места по подробнее. А требование использовать ArcGIS есть, или можно любую С++ библиотеку по работе с shp/grid?
Dmitry_NIC
Интересующийся
Сообщения: 19
Зарегистрирован: 20 окт 2011, 11:25
Репутация: 0

Re: Как получить высоту в точке (ArcGis Engine 9.3)

Сообщение Dmitry_NIC »

gamm, вы сами пробовали конвертировать shape в sxf??? Если нет, то хочу сказать, что основная проблема - это указать соответствие между кодами объектов в shape и кодами объектов в классификаторе sxf. Т.е. берёшь один объект, смотришь его код, смотришь, что это за объект, находишь то, что ему соответствует в классификаторе sxf. КБ "Панорама" тоже занимается конвертацией shape в sxf. И берёт, кажется, 100 рублей российских за перевод одного объекта, а их там тысячи. Да, в последних продуктах от Панорамы есть конвертер, но там именно сам ручками указывай все соответствия. Мы конвертнули одну карту из shape в sxf таким образом, но, во-первых, задолбались :), во-вторых, как ни странно, но карта нормально отображается только на том компе, на котором конвертировали, на других компах начинаются глюки. Видимо, что-то сделали не так, нет ещё опыта. Но как есть - так есть. С учётом того, что у заказчика все карты формата shape и пользуются они для работы с ними ArcGis Desktop 10, то смысл нам переводить их карты в sxf? Думаю, многоформатность им не очень-то нужна.

Bishop, ну...на самом деле нет требования именно на ArcGis...как оказалось. Думали, что будет, и шли этим путём. Оказалось, что в явном виде такого требования нет. Проблема лишь в том, что они работают с ArcGis. И все карты у них сохранены в виде докуманта ArcMap (файл *.mxd). Там прописаны все настройки по отображению карты. Другие компоненты, которые мы пробовали использовать (MapWinGis и чего-то там ещё) этот файл не понимают и там приходится самим в ручную настраивать отображение карты. Мой коллега, например, пока так и не смог добиться того, чтобы у него в MapWinGis карта отображалась так же красиво, как у меня, при использовании ArcGis Engine. Вот так, везде свои нюансы. Опять же тот же заказчик скажет наверняка, что документ карты у них *.mxd и наша программа их карты не открывает.

Возможно, вы предложите написать свой код, разбирающий файл mxd и применяющий эти настройки в другой компоненте...ох, но я даже не знаю, стоит ли нам идти этим путём. Может тогда вообще проще самим написать модуль, который на основе изолиний и командных точек строит матрицу высот (подобно матрице высот в sxf). Потому как, если отбросить мелочи, то получение высот - это пока основная проблема. Практически всё остальное вытянуть и реализовать получилось.

Кстати, немного отвлечённый вопрос: очень напрягает медленное отображение карты. Уж очень долго она перерисовывается. Это можно ускорить как-то?
gamm
Гуру
Сообщения: 4170
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1107
Ваше звание: программист
Откуда: Казань

Re: Как получить высоту в точке (ArcGis Engine 9.3)

Сообщение gamm »

Dmitry_NIC писал(а):gamm, вы сами пробовали конвертировать shape в sxf???
я не только пробовал, я эти конвертеры писал, и они славно работали. Еще в одна тысяча девятьсот затертом году. Люди работали в в MapIinfo, AutoCAD и Пень'О'Раме, и нужно было обмениваться данными. Кстати, проблема классификаторов ни разу не имеет отношения к конвертеру. И если вы используете не саму Панораму, а SDK, то вам и не нужен классификатор (если это не топокарта им.Генштаба СССР), цепляйте нормальную базу и работайте.
Dmitry_NIC
Интересующийся
Сообщения: 19
Зарегистрирован: 20 окт 2011, 11:25
Репутация: 0

Re: Как получить высоту в точке (ArcGis Engine 9.3)

Сообщение Dmitry_NIC »

Bishop, попробовал написать так, как написали вы:
IRaster2 *pRaster2 = (IRaster2 *)pRaster;

Компилятор это хавает. Но в дальнейшем функции ToPixelColumn и ToPixelRow не преобразуют координаты карты в столбцы и строки. Т.е. у меня как были у переменных на входе нулевые значения - так и остаются.
Смущает вот что:
Изображение

Вы можете так по картинке сказать, теоретически нормально ли прошло создание pRaster2? Меня смущают вопросы в последних строках. Я подозреваю что что-то прошло не так и функции в итоге не работают, потому и нет преобразования координат в столбцы/строки.
Аватара пользователя
Дмитрий Барышников
Гуру
Сообщения: 2572
Зарегистрирован: 17 ноя 2009, 19:17
Репутация: 261
Откуда: Москва

Re: Как получить высоту в точке (ArcGis Engine 9.3)

Сообщение Дмитрий Барышников »

Выполните так:

Код: Выделить всё

IRaster2* pRaster2(NULL);
HRESULT hr = pRaster->QueryInterface(IID_IRaster2,(void**)&pRaster2);
if(FAILED(hr))
return hr;

Код ошибки ищем в доках Микрософт или здесь http://help.arcgis.com/en/sdk/10.0/arco ... 000000.htm или где-то рядом при помощи поиска по значению.
Ответить

Вернуться в «ArcGIS»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 4 гостя