Как можно сделать обратный геокодинг средствами "Панорамы", т.е. чтобы по заданным геокоординатам возвращался адрес (город, улица, дом, ...) ближайшего объекта.
24.05.2010 11:58:18
Как можно сделать обратный геокодинг средствами "Панорамы", т.е. чтобы по заданным геокоординатам возвращался адрес (город, улица, дом, ...) ближайшего объекта.
|
|
|
|
24.05.2010 13:04:49
на каком языке программирования ?
Не тот глуп кто не знает, а тот, кто не знает где искать.
|
|
|
|
24.05.2010 13:18:06
c#
|
|
|
|
27.05.2010 19:43:13
Для того, чтобы получить адрес в точке карты, необходимо иметь в этой точке на карте объект. У этого объекта должна быть информация об адресе.
Ваша задача сводится к тому, чтобы в заданной точке найти объект и считать из него адресную информацию. Скорее всего, адресная информация будет содержаться в семантических характеристиках объекта. подробно и обо всех API-функциях работы с картографией "Панорама" тут - Вызов API описывается стандартно для C# - через
Пример для С#, где есть модуль с описанием вызова многих API-функций, а также с описанием большинства используемых структур, можно скачать тут - Для поиска объекта в точке и перебора найденных в этой точке объектов советую использовать функцию
Обращаю Ваше внимание на то, что при описании вызова API-функций для переменных, являющихся в ГИС-ядре указателями на соответсвующие классы, следует использовать тип данных C# - IntPtr. Это все переменные, обозначенные как (H)-HANDLE - HMAP, HSITE, HOBJ, HSELECT... Это позволит избежать разногласий при работе на 32 и 64 разрядных ОС. Алгоритм: 1.открыть карту - mapOpenData - получим hMap 2.создать пустой объект - mapCreateObject - получаем hObj 3.создать контекст условий для поиска и, при необходимости, его заполнить (например искать только среди объектов определнного слоя и локализации) - mapCreateMapSelectContext - получим hSelect 4.определям габариты рамки для поиска объекта (в данном случае точка + дельта) - заполняем MAPDFRAME 5.в цикле перебираем найденные объекты в заданной точке, пока не найдем нужный или они не кончатся - вызов фунции mapWhatObjectBySelect, куда передаем все нажитое непосиьным трудом в пунктах 1-4, указываем при этом флаги WO_FIRST - для первой итерации и далее WO_NEXT, а также формат координат, в котором представлен район поиска (метры, радианы, пикселы...). 6.у найденного объекта (он будет помещен в hObj) считываем необходимые семантические характеристики - mapSemanticValue (или mapSemanticValueUn - для юникода). 7.освобождаем память (ибо сборщики мусора тут бессильны - это неуправляемый АПИ) - mapFreeObject и т.д. - для всего что насоздавали.
Изменено: |
|||||
|
|
||||
© КБ Панорама, 1991-2024 Регистрируясь или авторизуясь на форуме, Вы соглашаетесь с Политикой конфиденциальности |