Построение и выделение списков объектов на карте

Печать Предыдущая страница Стартовая страница Следующая страница

По результатам анализа и обработки объектов векторной карты могут быть отобраны некоторые объекты, которые целесообразно выделить на карте как результат работы скрипта и\или для дальнейшей обработки в цепочке выполняемых скриптов или интерактивными инструментами ГИС.

С этой целью применяются функции 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)