Построение и выделение списков объектов на карте |
По результатам анализа и обработки объектов векторной карты могут быть отобраны некоторые объекты, которые целесообразно выделить на карте как результат работы скрипта и\или для дальнейшей обработки в цепочке выполняемых скриптов или интерактивными инструментами ГИС. С этой целью применяются функции MAPAPI для отбора объектов в общие списки карты или формирования именованных списков для дальнейших операций над списками.
Самый простой способ - формировать список отбираемых объектов в общих условиях поиска объектов для карты. Но этот метод не будет корректно работать при многопоточном выполнении скриптов.
seekapi.mapSetTotalSeekAccess(hmap, 0) # Очистить условия общего поиска
mapname = mapsyst.WTEXT(1024) mapapi.mapGetListNameUn(hmap,1, mapname, mapname.size())
count = 0 objcount = mapapi.mapGetObjectCount(hmap,1)+1 # Количество объектов на карте + 1 for i in range(1,objcount): # Цикл по объектам карты ret = seekapi.mapReadObjectByNumber(hmap, hmap, work, 1, i) if ret == 0: break if mapapi.mapPointCount(work, -1) < 1000: continue count += 1 key = mapapi.mapObjectKey(work) seekapi.mapSetTotalSeekSampleUn(hmap, mapname, key) # Добавить в список
if count > 0: mapapi.mapSelectObjects(1) # Выделить на карте объекты, которые были найдены
После завершения работы скрипта на карте будут подсвечены отобранные объекты. Если объекты отбираются для последующей обработки в другом скрипте, то можно вместо выделения на карте установить признак выделения объектов без перерисовки карты.
if count > 0: seekapi. mapSetTotalSelectFlag(hmap, 1)
|