В наборе прототипов скриптов (mapapi.py) есть указанная функция -
[CODE]# Вывести изображение условного знака в XImage (массив)
# Описание структуры XIMAGEDESC в maptype.h
# rect - фрагмент для вывода отображения
# func - функция отображения объекта
# parm - параметры изображения
# colors - количество цветов
# palette - палитра
# text - необходимый текст
# local - локализация
# При ошибке в параметрах возвращает ноль
mapPaintExampleObjectByFuncToXImagePro_t = mapsyst.GetProcAddress(acceslib,ctypes.c_int,'mapPaintExampleObjectByFuncToXImagePro', maptype.HMAP, ctypes.POINTER(maptype.XIMAGEDESC), ctypes.POINTER(maptype.RECT), ctypes.c_int, ctypes.c_char_p, ctypes.c_int, ctypes.POINTER(maptype.COLORREF), maptype.PWCHAR, ctypes.c_int, ctypes.c_int)
def mapPaintExampleObjectByFuncToXImagePro(_hMap: maptype.HMAP, _imagedesc: ctypes.POINTER(maptype.XIMAGEDESC), _rect: ctypes.POINTER(maptype.RECT), _func: int, _parm: ctypes.c_char_p, _colors: int, _palette: ctypes.POINTER(maptype.COLORREF), _text: mapsyst.WTEXT, _local: int, _erase: int) -> int:
return mapPaintExampleObjectByFuncToXImagePro_t (_hMap, _imagedesc, _rect, _func, _parm, _colors, _palette, _text.buffer(), _local, _erase)[/CODE]
Особенности написания скриптов с функциями MAPAPI описаны в Help -
[URL=https://help.gisserver.ru/v15/russian/mapscena/index.html?runpy.html]https://help.gisserver.ru/v15/russian/mapscena/index.html?runpy.html[/URL]
[URL=https://help.gisserver.ru/v15/russian/mapscena/index.html?python_script_struct.html]https://help.gisserver.ru/v15/russian/mapscena/index.html?python_script_struct.html[/URL]
Все базовые функции имеют прототипы на python (или могут быть дополнены) и алгоритм на C++ может быть полностью воспроизведен.
Например:
[CODE]# Запросить текущую палитру карты (с учетом яркости/контрастности)
# hMap - идентификатор открытой основной карты
# hSite - идентификатор открытой пользовательской карты
# colors - указатель на структуру COLORREF первого цвета в палитре
# count - количество цветов (не более 256)
# При ошибке возвращает ноль
mapGetSitePalette_t = mapsyst.GetProcAddress(acceslib,ctypes.c_int,'mapGetSitePalette', maptype.HMAP, maptype.HSITE, ctypes.POINTER(maptype.COLORREF), ctypes.c_int)
def mapGetSitePalette(_hMap: maptype.HMAP, _hSite: maptype.HSITE, _colors: ctypes.POINTER(maptype.COLORREF), _count: int) -> int:
return mapGetSitePalette_t (_hMap, _hSite, _colors, _count)
[/CODE][CODE]# Запросить параметры отображения (принтерного)объекта по внутреннему коду объекта
# hRsc - идентификатор классификатора карты
# incode - внутренний код объекта
# При ошибке возвращает ноль
mapGetRscPrintObjectParameters_t = mapsyst.GetProcAddress(acceslib,ctypes.c_char_p,'mapGetRscPrintObjectParameters', maptype.HRSC, ctypes.c_int)
def mapGetRscPrintObjectParameters(_hRsc: maptype.HRSC, _incode: int) -> ctypes.c_char_p:
return mapGetRscPrintObjectParameters_t (_hRsc, _incode)
# Запросить параметры отображения объекта по внутреннему коду
# hRsc - идентификатор классификатора карты
# incode - внутренний код объекта
# При ошибке возвращает ноль
mapGetRscObjectParameters_t = mapsyst.GetProcAddress(acceslib,ctypes.c_char_p,'mapGetRscObjectParameters', maptype.HRSC, ctypes.c_int)
def mapGetRscObjectParameters(_hRsc: maptype.HRSC, _incode: int) -> ctypes.c_char_p:
return mapGetRscObjectParameters_t (_hRsc, _incode)
[/CODE]
[CODE]# Вывести изображение условного знака в XImage (массив)
# Описание структуры XIMAGEDESC в maptype.h
# rect - фрагмент для вывода отображения
# func - функция отображения объекта
# parm - параметры изображения
# colors - количество цветов
# palette - палитра
# text - необходимый текст
# local - локализация
# При ошибке в параметрах возвращает ноль
mapPaintExampleObjectByFuncToXImagePro_t = mapsyst.GetProcAddress(acceslib,ctypes.c_int,'mapPaintExampleObjectByFuncToXImagePro', maptype.HMAP, ctypes.POINTER(maptype.XIMAGEDESC), ctypes.POINTER(maptype.RECT), ctypes.c_int, ctypes.c_char_p, ctypes.c_int, ctypes.POINTER(maptype.COLORREF), maptype.PWCHAR, ctypes.c_int, ctypes.c_int)
def mapPaintExampleObjectByFuncToXImagePro(_hMap: maptype.HMAP, _imagedesc: ctypes.POINTER(maptype.XIMAGEDESC), _rect: ctypes.POINTER(maptype.RECT), _func: int, _parm: ctypes.c_char_p, _colors: int, _palette: ctypes.POINTER(maptype.COLORREF), _text: mapsyst.WTEXT, _local: int, _erase: int) -> int:
return mapPaintExampleObjectByFuncToXImagePro_t (_hMap, _imagedesc, _rect, _func, _parm, _colors, _palette, _text.buffer(), _local, _erase)[/CODE]
Особенности написания скриптов с функциями MAPAPI описаны в Help -
[URL=https://help.gisserver.ru/v15/russian/mapscena/index.html?runpy.html]https://help.gisserver.ru/v15/russian/mapscena/index.html?runpy.html[/URL]
[URL=https://help.gisserver.ru/v15/russian/mapscena/index.html?python_script_struct.html]https://help.gisserver.ru/v15/russian/mapscena/index.html?python_script_struct.html[/URL]
Все базовые функции имеют прототипы на python (или могут быть дополнены) и алгоритм на C++ может быть полностью воспроизведен.
Например:
[CODE]# Запросить текущую палитру карты (с учетом яркости/контрастности)
# hMap - идентификатор открытой основной карты
# hSite - идентификатор открытой пользовательской карты
# colors - указатель на структуру COLORREF первого цвета в палитре
# count - количество цветов (не более 256)
# При ошибке возвращает ноль
mapGetSitePalette_t = mapsyst.GetProcAddress(acceslib,ctypes.c_int,'mapGetSitePalette', maptype.HMAP, maptype.HSITE, ctypes.POINTER(maptype.COLORREF), ctypes.c_int)
def mapGetSitePalette(_hMap: maptype.HMAP, _hSite: maptype.HSITE, _colors: ctypes.POINTER(maptype.COLORREF), _count: int) -> int:
return mapGetSitePalette_t (_hMap, _hSite, _colors, _count)
[/CODE][CODE]# Запросить параметры отображения (принтерного)объекта по внутреннему коду объекта
# hRsc - идентификатор классификатора карты
# incode - внутренний код объекта
# При ошибке возвращает ноль
mapGetRscPrintObjectParameters_t = mapsyst.GetProcAddress(acceslib,ctypes.c_char_p,'mapGetRscPrintObjectParameters', maptype.HRSC, ctypes.c_int)
def mapGetRscPrintObjectParameters(_hRsc: maptype.HRSC, _incode: int) -> ctypes.c_char_p:
return mapGetRscPrintObjectParameters_t (_hRsc, _incode)
# Запросить параметры отображения объекта по внутреннему коду
# hRsc - идентификатор классификатора карты
# incode - внутренний код объекта
# При ошибке возвращает ноль
mapGetRscObjectParameters_t = mapsyst.GetProcAddress(acceslib,ctypes.c_char_p,'mapGetRscObjectParameters', maptype.HRSC, ctypes.c_int)
def mapGetRscObjectParameters(_hRsc: maptype.HRSC, _incode: int) -> ctypes.c_char_p:
return mapGetRscObjectParameters_t (_hRsc, _incode)
[/CODE]