#!/usr/bin/env python3 import os import ctypes import mapsyst import maptype PACK_WIDTH = 1 #----------------------------- class FEATURELIST(ctypes.Structure): _pack_ = PACK_WIDTH _fields_ = [("Length",ctypes.c_uint), ("Xmlns",ctypes.c_int), ("Hmap",maptype.HMAP), ("Hsite",maptype.HSITE), ("Hselect",maptype.HSELECT), ("Hwnd",maptype.HMESSAGE), ("Hobj",maptype.HOBJ), ("SemCodeList",ctypes.POINTER(ctypes.c_int)), ("Statistic",ctypes.c_void_p), ("Dframe",maptype.DFRAME), ("Extend",maptype.DFRAME), ("Scale",ctypes.c_double), ("Flags",ctypes.c_int), ("List",ctypes.c_int), ("Completed",ctypes.c_int), ("Force",ctypes.c_int), ("Number",ctypes.c_uint), ("Count",ctypes.c_uint), ("Epsgcode",ctypes.c_uint), ("Format",ctypes.c_uint), ("ObjectCreateLastStep",ctypes.c_uint), ("MathMetod",ctypes.c_uint), ("ServiceVersion",ctypes.c_int), ("TransactionType",ctypes.c_int), ("FindDirection",ctypes.c_int), ("SemCodeListCount",ctypes.c_uint), ("PrintEpsg",ctypes.c_int), ("Test",ctypes.c_int), ("ClickPoint",maptype.DOUBLEPOINT), ("SortList",ctypes.c_void_p), ("SemSortCode",ctypes.c_int), ("MultyLevelScale",ctypes.c_int), ("ClickPointFrame",maptype.DFRAME), ("Reserve",ctypes.c_char*152)] #----------------------------- #----------------------------- class GMLPARAMS(ctypes.Structure): _pack_ = PACK_WIDTH _fields_ = [("Hwnd",maptype.HMESSAGE), ("SquareCode",ctypes.c_int), ("PointCode",ctypes.c_int), ("LineCode",ctypes.c_int), ("TextCode",ctypes.c_int), ("Protocol",ctypes.c_int), ("SavedObjectNumber",ctypes.c_int), ("TurnCoordinate",ctypes.c_int), ("CutObjects",ctypes.c_int), ("Reserve",ctypes.c_char*84)] #----------------------------- try: if os.environ['gisaccesdll']: gisaccesname = os.environ['gisaccesdll'] except KeyError: gisaccesname = 'gis64acces.dll' try: acceslib = mapsyst.LoadLibrary( gisaccesname ) # Открыть доступ к схеме для потокового формирования GML\JSON # Если классификатор размещен на ГИС Сервере, то схема открывается через # идентификатор карты (gmlOpen, gmlOpenEx, gmlOpenUn) # schemafilename - локальный путь к файлу XSD-схемы # rscname - локальный путь к файлу классификатору RSC, # с которым связаны карты, планируемые к обработке # hrsc - идентификатор классификатора (может быть получен в mapGetRscIdent, mapGetRscIdentByObject) # Возвращает идентификатор доступа к GML данным # При ошибке возвращает ноль # gmlOpenPro_t = mapsyst.GetProcAddress(curLib,HGML,'gmlOpenPro', maptype.PWCHAR, maptype.PWCHAR) # def gmlOpenPro(_schemafilename: mapsyst.WTEXT, _rscname: mapsyst.WTEXT) -> HGML: # return gmlOpenPro_t (_schemafilename.buffer(), _rscname.buffer()) # gmlOpenProEx_t = mapsyst.GetProcAddress(curLib,HGML,'gmlOpenProEx', maptype.PWCHAR, maptype.HRSC) # def gmlOpenProEx(_schemafilename: mapsyst.WTEXT, _hrsc: maptype.HRSC) -> HGML: # return gmlOpenProEx_t (_schemafilename.buffer(), _hrsc) # Открыть доступ к прикладной схеме для заданной карты # hmap - идентификатор открытых данных (документа) # hsite - идентификатор открытой пользовательской карты в документе # schemafilename - локальный путь к файлу XSD-схемы GML данных # schemaURL - URL к файлу XSD-схемы GML данных # например: "http:#www.gisinfo.net/bsd/topomap.xsd" # Возвращает идентификатор доступа к прикладной схеме # Для записи набора (dataset) функцией gmlGetFeaturiesDataset # доступ к схеме открывается gmlOpenEx # По завершении работы необходимо освободить ресурсы вызовом gmlClose # При ошибке возвращает ноль # gmlOpen_t = mapsyst.GetProcAddress(curLib,HGML,'gmlOpen', maptype.HMAP, ctypes.c_char_p) # def gmlOpen(_hmap: maptype.HMAP, _schemafilename: ctypes.c_char_p) -> HGML: # return gmlOpen_t (_hmap, _schemafilename) # gmlOpenEx_t = mapsyst.GetProcAddress(curLib,HGML,'gmlOpenEx', maptype.HMAP, maptype.HSITE, ctypes.c_char_p, ctypes.c_char_p) # def gmlOpenEx(_hmap: maptype.HMAP, _hsite: maptype.HSITE, _schemafilename: ctypes.c_char_p, _schemaURL: ctypes.c_char_p) -> HGML: # return gmlOpenEx_t (_hmap, _hsite, _schemafilename, _schemaURL) # gmlOpenUn_t = mapsyst.GetProcAddress(curLib,HGML,'gmlOpenUn', maptype.HMAP, maptype.HSITE, maptype.PWCHAR, maptype.PWCHAR) # def gmlOpenUn(_hmap: maptype.HMAP, _hsite: maptype.HSITE, _schemafilename: mapsyst.WTEXT, _schemaURL: mapsyst.WTEXT) -> HGML: # return gmlOpenUn_t (_hmap, _hsite, _schemafilename.buffer(), _schemaURL.buffer()) # Установить адрес схемы # hgml - идентификатор # schemaLocation - новый адрес схемы # При ошибке возвращает ноль # gmlSetSchemaLocation_t = mapsyst.GetProcAddress(curLib,ctypes.c_int,'gmlSetSchemaLocation', HGML, maptype.PWCHAR) # def gmlSetSchemaLocation(_hgml: HGML, _schemaLocation: mapsyst.WTEXT) -> int: # return gmlSetSchemaLocation_t (_hgml, _schemaLocation.buffer()) # Закрыть доступ к схеме и освободить ресурсы # hgml - идентификатор GML данных # gmlClose_t = mapsyst.GetProcAddress(curLib,ctypes.c_void_p,'gmlClose', HGML) # def gmlClose(_hgml: HGML) -> ctypes.c_void_p: # return gmlClose_t (_hgml) # Запросить число типов объектов GML данных ("слоев") # Возвращает число типов объектов GML, содержащихся в схеме # При ошибке возвращает ноль # gmlFeatureTypeCount_t = mapsyst.GetProcAddress(curLib,ctypes.c_int,'gmlFeatureTypeCount', HGML) # def gmlFeatureTypeCount(_hgml: HGML) -> int: # return gmlFeatureTypeCount_t (_hgml) # Запросить порядковый номер типа объекта по имени типа # hgml - идентификатор открытой схемы для записи GML # featuretypename - имя типа объекта GML данных # Возвращает порядковый номер типа объекта в схеме # При ошибке возвращает ноль # gmlFeatureTypeNameNumber_t = mapsyst.GetProcAddress(curLib,ctypes.c_int,'gmlFeatureTypeNameNumber', HGML, ctypes.c_char_p) # def gmlFeatureTypeNameNumber(_hgml: HGML, _featuretypename: ctypes.c_char_p) -> int: # return gmlFeatureTypeNameNumber_t (_hgml, _featuretypename) # Запросить габариты объектов карты по списку номеров типов объектов # hgml - идентификатор GML данных # hmap - идентификатор открытых данных (документа) # hsite - идентификатор открытой пользовательской карты в документе # list - номер обрабатываемого листа на многолистовой карте или 0 (все листы) # hselect - идентификатор условий отбора объектов или 0 # epsgcode - код геодезической системы координат в базе данных EPSG, для GML по умолчанию - 4326 # dframe - габариты объектов карты в указанной системе координат # При ошибке возвращает ноль. # gmlFeaturiesBoundsPro_t = mapsyst.GetProcAddress(curLib,ctypes.c_int,'gmlFeaturiesBoundsPro', HGML, maptype.HMAP, maptype.HSITE, ctypes.c_int, maptype.HSELECT, ctypes.c_int, ctypes.POINTER(maptype.DFRAME)) # def gmlFeaturiesBoundsPro(_hgml: HGML, _hmap: maptype.HMAP, _hsite: maptype.HSITE, _list: int, _hselect: maptype.HSELECT, _epsgcode: int, _dframe: ctypes.POINTER(maptype.DFRAME)) -> int: # return gmlFeaturiesBoundsPro_t (_hgml, _hmap, _hsite, _list, _hselect, _epsgcode, _dframe) # Запросить данные объектов карты по заданным условиям в файле формата GML или JSON # hgml - идентификатор открытой схемы для записи GML # hmap - идентификатор открытых данных (документа) # hsite - идентификатор открытой пользовательской карты в документе # list - номер листа для многолистовой карты или 1, для конвертирования # в один GML-файл сразу всех листов необходимо указать "-1" или 0 # hselect - идентификатор условий отбора объектов или 0 # number - порядковый номер объекта, с которого начинать вывод в файл (с 1) # count - число объектов, выводимых в файл, если равно 0, то выводятся все объекты # epsgcode - код геодезической системы координат в базе данных EPSG, # для GML по умолчанию - 4326 # dframe - бласть отбора объектов карты в указанной системе координат или 0 (левый нижний и правый верхний угол области) # format - тип разметки или формат файла: GML, GML/WFS, JSON (см. OGCSERVICETYPE) # targetfilename - имя выходного файла # flags - флажки вывода расширенных метаданных об объекте (см. OGCSERVICEFLAG) # format - формат вывода данных: GML, JSON (см. OGCSERVICETYPE) # mapid - указатель на идентификатор карты, который записывается в каждый объект карты или 0 # completed - признак необходимости записи элементов начала и конца файла # (0 - не формировать, 1 - только закрывающий, 2 - только начальные теги, -1 - начало и конец данных) # при значении 0 и 1 файл для записи должен существовать, при значении 2 и -1 файл создается автоматически # JSON - { "type": "FeatureCollection", ... } # GML - ... # WFS - ... # force - признак принудительной записи объектов, которые не описаны в прикладной схеме, # если равен нулю, то записываются только объекты, виды (коды) которых описаны в схеме # hwnd - идентификатор окна для приема сообщений или ноль, посылаются сообщения WM_OBJECT (%, число объектов) # requestId - идентификатор запроса # xmlns - признак записи пространства имен в тег member для gml/wfs # secondframe - дополнительные точки для области отбора объектов карты в указанной системе координат # (подается дополнительно к dframe, левый верхний и правый нижний угол области) # Возвращает число записанных объектов # Если заданы слои, содержащие объекты, которых нет на карте, то возвращает -1 # Если условиям поиска не соответствует ни один объект, то возвращает -2 # Если выходной файл не может быть открыт, то возвращает -3 # Если произошел сбой при работе программы, то возвращает -4 # Если для карты запрещено копирование, то возвращает -5 # gmlGetFeaturiesPro_t = mapsyst.GetProcAddress(curLib,ctypes.c_int,'gmlGetFeaturiesPro', HGML, maptype.HMAP, maptype.HSITE, ctypes.c_int, maptype.HSELECT, maptype.PWCHAR, ctypes.c_int, ctypes.c_int, ctypes.c_int, ctypes.POINTER(maptype.DFRAME), ctypes.c_int, ctypes.c_int, maptype.PWCHAR, maptype.PWCHAR, ctypes.c_int, ctypes.c_int, maptype.HMESSAGE, maptype.PWCHAR, ctypes.c_int) # def gmlGetFeaturiesPro(_hgml: HGML, _hmap: maptype.HMAP, _hsite: maptype.HSITE, _list: int, _hselect: maptype.HSELECT, _metadata: mapsyst.WTEXT, _number: int, _count: int, _epsgcode: int, _dframe: ctypes.POINTER(maptype.DFRAME), _flags: int, _format: int, _targetfilename: mapsyst.WTEXT, _mapid: mapsyst.WTEXT, _completed: int, _force: int, _hwnd: maptype.HMESSAGE, _requestId: mapsyst.WTEXT = None, _xmlns: int = 0) -> int: # return gmlGetFeaturiesPro_t (_hgml, _hmap, _hsite, _list, _hselect, _metadata.buffer(), _number, _count, _epsgcode, _dframe, _flags, _format, _targetfilename.buffer(), _mapid.buffer(), _completed, _force, _hwnd, _requestId.buffer(), _xmlns) # gmlGetFeaturiesProEx_t = mapsyst.GetProcAddress(curLib,ctypes.c_int,'gmlGetFeaturiesProEx', HGML, maptype.HMAP, maptype.HSITE, ctypes.c_int, maptype.HSELECT, maptype.PWCHAR, ctypes.c_int, ctypes.c_int, ctypes.c_int, ctypes.POINTER(maptype.DFRAME), ctypes.c_int, ctypes.c_int, maptype.PWCHAR, maptype.PWCHAR, ctypes.c_int, ctypes.c_int, maptype.HMESSAGE, maptype.PWCHAR, ctypes.c_int, ctypes.POINTER(maptype.DFRAME)) # def gmlGetFeaturiesProEx(_hgml: HGML, _hmap: maptype.HMAP, _hsite: maptype.HSITE, _list: int, _hselect: maptype.HSELECT, _metadata: mapsyst.WTEXT, _number: int, _count: int, _epsgcode: int, _dframe: ctypes.POINTER(maptype.DFRAME), _flags: int, _format: int, _targetfilename: mapsyst.WTEXT, _mapid: mapsyst.WTEXT, _completed: int, _force: int, _hwnd: maptype.HMESSAGE, _requestId: mapsyst.WTEXT = None, _xmlns: int = 0, _secondframe: ctypes.POINTER(maptype.DFRAME) = None) -> int: # return gmlGetFeaturiesProEx_t (_hgml, _hmap, _hsite, _list, _hselect, _metadata.buffer(), _number, _count, _epsgcode, _dframe, _flags, _format, _targetfilename.buffer(), _mapid.buffer(), _completed, _force, _hwnd, _requestId.buffer(), _xmlns, _secondframe) # gmlGetFeaturiesList_t = mapsyst.GetProcAddress(curLib,ctypes.c_int,'gmlGetFeaturiesList', HGML, maptype.PWCHAR, maptype.PWCHAR, maptype.PWCHAR, maptype.PWCHAR, ctypes.POINTER(FEATURELIST)) # def gmlGetFeaturiesList(_hgml: HGML, _metadata: mapsyst.WTEXT, _targetfilename: mapsyst.WTEXT, _requestId: mapsyst.WTEXT, _mapid: mapsyst.WTEXT, _featurelist: ctypes.POINTER(FEATURELIST)) -> int: # return gmlGetFeaturiesList_t (_hgml, _metadata.buffer(), _targetfilename.buffer(), _requestId.buffer(), _mapid.buffer(), _featurelist) # Запросить данные объектов карты по заданным условиям в памяти в формате GML или JSON # Для чтения из памяти результата необходимо вызвать gmlGetFeaturiesPoint # После завершения чтения необходимо освободить память вызовом gmlFreeFeaturiesPoint # Если объем данных слишком большой, то функция может занять всю память в системе # Назначение параметров аналогично функции gmlGetFeaturiesPro # xmlns - признак записи пространства имен в тег member для gml/wfs # Возвращает в параметре retcode число записанных объектов или код ошибки # Если заданы слои, содержащие объекты, которых нет на карте, то записывает -1 # Если условиям поиска не соответствует ни один объект, то записывает -2 # Если произошел сбой при работе программы, то записывает -4 # Если для карты запрещено копирование, то записывает -5 # При ошибке возвращает ноль иначе идентификатор данных в памяти # gmlGetFeaturiesProInMemory_t = mapsyst.GetProcAddress(curLib,ctypes.c_void_p,'gmlGetFeaturiesProInMemory', HGML, maptype.HMAP, maptype.HSITE, ctypes.c_int, maptype.HSELECT, maptype.PWCHAR, ctypes.c_int, ctypes.c_int, ctypes.c_int, ctypes.POINTER(maptype.DFRAME), ctypes.c_int, ctypes.c_int, maptype.PWCHAR, ctypes.c_int, ctypes.c_int, ctypes.POINTER(ctypes.c_int), maptype.PWCHAR, ctypes.c_int) # def gmlGetFeaturiesProInMemory(_hgml: HGML, _hmap: maptype.HMAP, _hsite: maptype.HSITE, _list: int, _hselect: maptype.HSELECT, _metadata: mapsyst.WTEXT, _number: int, _count: int, _epsgcode: int, _dframe: ctypes.POINTER(maptype.DFRAME), _flags: int, _format: int, _mapid: mapsyst.WTEXT, _completed: int, _force: int, _retcode: ctypes.POINTER(ctypes.c_int), _requestId: mapsyst.WTEXT = None, _xmlns: int = 0) -> ctypes.c_void_p: # return gmlGetFeaturiesProInMemory_t (_hgml, _hmap, _hsite, _list, _hselect, _metadata.buffer(), _number, _count, _epsgcode, _dframe, _flags, _format, _mapid.buffer(), _completed, _force, _retcode, _requestId.buffer(), _xmlns) # Освободить память под данные по идентификатору данных, # полученному из функции gmlGetFeaturiesProInMemory или gmlGetObjectFeatureProInMemory gmlFreeFeaturiesPoint_t = mapsyst.GetProcAddress(acceslib,ctypes.c_void_p,'gmlFreeFeaturiesPoint', ctypes.c_void_p) def gmlFreeFeaturiesPoint(_handle: ctypes.c_void_p) -> ctypes.c_void_p: return gmlFreeFeaturiesPoint_t (_handle) # Запросить данные объекта карты в файле формата GML или JSON # hgml - идентификатор открытой схемы для записи GML (может быть равен нулю) # hobj - идентификатор объекта карты в памяти # epsgcode - код геодезической системы координат в базе данных EPSG # flags - флажки вывода расширенных метаданных об объекте (см. OGCSERVICEFLAG) # format - формат вывода данных: GML, JSON (см. OGCSERVICETYPE) # targetfilename - имя выходного GML или JSON файла # mapid - указатель на идентификатор карты, который записывается в каждый объект карты или 0 # requestId - идентификатор запроса для записи в метаданные # xmlns - признак записи пространства имен в тег member для gml/wfs # При ошибке возвращает ноль # gmlGetObjectFeaturePro_t = mapsyst.GetProcAddress(curLib,ctypes.c_int,'gmlGetObjectFeaturePro', HGML, maptype.HOBJ, ctypes.c_int, ctypes.c_int, ctypes.c_int, maptype.PWCHAR, maptype.PWCHAR, ctypes.c_int, maptype.PWCHAR, ctypes.c_int) # def gmlGetObjectFeaturePro(_hgml: HGML, _hobj: maptype.HOBJ, _epsgcode: int, _flags: int, _format: int, _targetfilename: mapsyst.WTEXT, _mapid: mapsyst.WTEXT, _completed: int, _requestId: mapsyst.WTEXT = None, _xmlns: int = 0) -> int: # return gmlGetObjectFeaturePro_t (_hgml, _hobj, _epsgcode, _flags, _format, _targetfilename.buffer(), _mapid.buffer(), _completed, _requestId.buffer(), _xmlns) # gmlGetObjectFeatureList_t = mapsyst.GetProcAddress(curLib,ctypes.c_int,'gmlGetObjectFeatureList', HGML, maptype.PWCHAR, maptype.PWCHAR, maptype.PWCHAR, maptype.PWCHAR, ctypes.POINTER(FEATURELIST)) # def gmlGetObjectFeatureList(_hgml: HGML, _metadata: mapsyst.WTEXT, _targetfilename: mapsyst.WTEXT, _requestId: mapsyst.WTEXT, _mapid: mapsyst.WTEXT, _featurelist: ctypes.POINTER(FEATURELIST)) -> int: # return gmlGetObjectFeatureList_t (_hgml, _metadata.buffer(), _targetfilename.buffer(), _requestId.buffer(), _mapid.buffer(), _featurelist) # Запросить данные объекта карты в памяти в формате GML или JSON # Для чтения из памяти результата необходимо вызвать gmlGetFeaturiesPoint # После завершения чтения необходимо освободить память вызовом gmlFreeFeaturiesPoint # Для дозаписи в память новых объектов параметр handle должен содержать # значение, которая вернула функция при первом вызове, когда параметр handle был равен 0 # Возвращает в параметре retcode число записанных объектов или код ошибки # Если заданы слои, содержащие объекты, которых нет на карте, то записывает -1 # Если условиям поиска не соответствует ни один объект, то записывает -2 # Если произошел сбой при работе программы, то записывает -4 # Если для карты запрещено копирование, то записывает -5 # При ошибке возвращает ноль иначе идентификатор данных в памяти # gmlGetObjectFeatureProInMemory_t = mapsyst.GetProcAddress(curLib,ctypes.c_void_p,'gmlGetObjectFeatureProInMemory', HGML, maptype.HOBJ, ctypes.c_int, ctypes.c_int, ctypes.c_int, ctypes.c_void_p, maptype.PWCHAR, ctypes.c_int, ctypes.POINTER(ctypes.c_int), maptype.PWCHAR, ctypes.c_int) # def gmlGetObjectFeatureProInMemory(_hgml: HGML, _hobj: maptype.HOBJ, _epsgcode: int, _flags: int, _format: int, _handle: ctypes.c_void_p, _mapid: mapsyst.WTEXT, _completed: int, _retcode: ctypes.POINTER(ctypes.c_int), _requestId: mapsyst.WTEXT = None, _xmlns: int = 0) -> ctypes.c_void_p: # return gmlGetObjectFeatureProInMemory_t (_hgml, _hobj, _epsgcode, _flags, _format, _handle, _mapid.buffer(), _completed, _retcode, _requestId.buffer(), _xmlns) # Запросить данные объекта карты по GML-идентификатору # hgml - идентификатор открытой схемы для записи GML # hmap - идентификатор открытых данных (документа) # hsite - идентификатор открытой пользовательской карты в документе # epsgcode - код геодезической системы координат в базе данных EPSG # id - GML-идентификатор объекта # flags - флажки вывода расширенных метаданных об объекте (см. OGCSERVICEFLAG) # format - формат вывода данных: GML, JSON (см. OGCSERVICETYPE) # targetfilename - имя выходного файла # mapid - указатель на идентификатор карты, который записывается в каждый объект карты или 0 # completed - признак необходимости записи элементов начала и конца файла # (0 - не формировать, 1 - только закрывающий, 2 - только начальные теги, -1 - начало и конец данных) # JSON - { "type": "FeatureCollection", ... } # GML - ... # WFS - ... # При ошибке возвращает ноль # gmlGetFeatureByIdPro_t = mapsyst.GetProcAddress(curLib,ctypes.c_int,'gmlGetFeatureByIdPro', HGML, maptype.HMAP, maptype.HSITE, ctypes.c_int, ctypes.c_int, ctypes.c_char_p, ctypes.c_int, ctypes.c_int, maptype.PWCHAR, maptype.PWCHAR, ctypes.c_int, maptype.PWCHAR) # def gmlGetFeatureByIdPro(_hgml: HGML, _hmap: maptype.HMAP, _hsite: maptype.HSITE, _list: int, _epsgcode: int, _id: ctypes.c_char_p, _flags: int, _format: int, _targetfilename: mapsyst.WTEXT, _mapid: mapsyst.WTEXT, _completed: int, _requestId: mapsyst.WTEXT = None) -> int: # return gmlGetFeatureByIdPro_t (_hgml, _hmap, _hsite, _list, _epsgcode, _id, _flags, _format, _targetfilename.buffer(), _mapid.buffer(), _completed, _requestId.buffer()) # Преобразовать координаты рамки из одной геодезической системы координат # в другую геодезическую систему координат # epsgcodesource - код исходной геодезической системы координат в базе данных EPSG, # epsgcodedest - код выходной геодезической системы координат в базе данных EPSG, # Коды могут быть в диапазоне 4326 - 4937 # dframe - координаты рамки в исходной системе координат в радианах # Возвращает по адресу dframe значения координат в СК epsgcodedest # При ошибке возвращает ноль. gmlGeoToGeo_t = mapsyst.GetProcAddress(acceslib,ctypes.c_int,'gmlGeoToGeo', ctypes.c_int, ctypes.c_int, ctypes.POINTER(maptype.DFRAME)) def gmlGeoToGeo(_epsgcodesource: int, _epsgcodedest: int, _dframe: ctypes.POINTER(maptype.DFRAME)) -> int: return gmlGeoToGeo_t (_epsgcodesource, _epsgcodedest, _dframe) # Установить отбор объектов по идентификатору слоя # hgml - идентификатор открытой схемы для записи GML # hselect - идентификатор условий отбора объектов # featuretype - идентификатор слоя в кодировке UTF-8 # При ошибке возвращает ноль # gmlSetSelectByFeaturieType_t = mapsyst.GetProcAddress(curLib,ctypes.c_int,'gmlSetSelectByFeaturieType', HGML, maptype.HSELECT, ctypes.c_char_p) # def gmlSetSelectByFeaturieType(_hgml: HGML, _hselect: maptype.HSELECT, _featuretype: ctypes.c_char_p) -> int: # return gmlSetSelectByFeaturieType_t (_hgml, _hselect, _featuretype) # Cоздание объектов из файла формата geoJSON # hmap - идентификатор открытых данных (документа) # hsite - идентификатор открытой пользовательской карты # jsonname - имя файла формата GeoJSON # Код создаваемого объекта ищется в поле code ("code": 115001010,) # Если код не задан в объекте, то он выбирается из входных параметров # squareCode - код создаваемых площадных объектов или 0 # pointCode - код создаваемых точечных объектов или 0 # lineCode - код создаваемых линейных объектов или 0 # textCode - код создаваемых подписей или 0 # hwnd - идентификатор окна для приема сообщений или ноль, посылаются сообщения WM_PROGRESSBAR # charset - кодировка текста (0 - UTF-8 или 1- ANSI) # При ошибке возвращает ноль gmlCreateObjectsFromJSONPro_t = mapsyst.GetProcAddress(acceslib,ctypes.c_int,'gmlCreateObjectsFromJSONPro', maptype.HMAP, maptype.HSITE, maptype.PWCHAR, ctypes.c_int, ctypes.c_int, ctypes.c_int, ctypes.c_int, maptype.HMESSAGE, ctypes.c_int) def gmlCreateObjectsFromJSONPro(_hmap: maptype.HMAP, _hsite: maptype.HSITE, _jsonname: mapsyst.WTEXT, _squareCode: int = 0, _pointCode: int = 0, _lineCode: int = 0, _textCode: int = 0, _hwnd: maptype.HMESSAGE = 0, _charset: int = 0) -> int: return gmlCreateObjectsFromJSONPro_t (_hmap, _hsite, _jsonname.buffer(), _squareCode, _pointCode, _lineCode, _textCode, _hwnd, _charset) gmlCreateObjectsFromJSONStream_t = mapsyst.GetProcAddress(acceslib,ctypes.c_int,'gmlCreateObjectsFromJSONStream', maptype.HMAP, maptype.HSITE, ctypes.c_char_p, ctypes.c_int, ctypes.c_int, ctypes.c_int, ctypes.c_int, ctypes.c_int, maptype.HMESSAGE, ctypes.c_int) def gmlCreateObjectsFromJSONStream(_hmap: maptype.HMAP, _hsite: maptype.HSITE, _stream: ctypes.c_char_p, _streamlength: int, _squareCode: int = 0, _pointCode: int = 0, _lineCode: int = 0, _textCode: int = 0, _hwnd: maptype.HMESSAGE = 0, _charset: int = 0) -> int: return gmlCreateObjectsFromJSONStream_t (_hmap, _hsite, _stream, _streamlength, _squareCode, _pointCode, _lineCode, _textCode, _hwnd, _charset) gmlCreateObjectsFromJSONEx_t = mapsyst.GetProcAddress(acceslib,ctypes.c_int,'gmlCreateObjectsFromJSONEx', maptype.HMAP, maptype.HSITE, maptype.PWCHAR, ctypes.c_int, ctypes.c_int, ctypes.c_int, ctypes.c_int, maptype.HMESSAGE) def gmlCreateObjectsFromJSONEx(_hmap: maptype.HMAP, _hsite: maptype.HSITE, _jsonname: mapsyst.WTEXT, _squareCode: int = 0, _pointCode: int = 0, _lineCode: int = 0, _textCode: int = 0, _hwnd: maptype.HMESSAGE = 0) -> int: return gmlCreateObjectsFromJSONEx_t (_hmap, _hsite, _jsonname.buffer(), _squareCode, _pointCode, _lineCode, _textCode, _hwnd) gmlCreateObjectsFromJSON_t = mapsyst.GetProcAddress(acceslib,ctypes.c_int,'gmlCreateObjectsFromJSON', maptype.HMAP, maptype.HSITE, maptype.PWCHAR, ctypes.c_int, ctypes.c_int, ctypes.c_int, ctypes.c_int) def gmlCreateObjectsFromJSON(_hmap: maptype.HMAP, _hsite: maptype.HSITE, _jsonname: mapsyst.WTEXT, _squareCode: int = 0, _pointCode: int = 0, _lineCode: int = 0, _textCode: int = 0) -> int: return gmlCreateObjectsFromJSON_t (_hmap, _hsite, _jsonname.buffer(), _squareCode, _pointCode, _lineCode, _textCode) # Освободить идентификатор данных json # hJson - идентификатор данных, полученный в функциях gmlLoadJsonTransactionToMap # gmlFreeJsonHandle_t = mapsyst.GetProcAddress(curLib,ctypes.c_void_p,'gmlFreeJsonHandle', HJSON) # def gmlFreeJsonHandle(_hJson: HJSON) -> ctypes.c_void_p: # return gmlFreeJsonHandle_t (_hJson) # Cоздание объектов из потока транзакций # hMap, hSite - идентификатор карты # stream - указатель на данные, в котором находится транзакции # streamlength - длина потока # protocol - флаг формирования лога ошибок # При ошибке возвращает 0, иначе идентификатор данных # gmlLoadJsonTransactionToMap_t = mapsyst.GetProcAddress(curLib,HJSON,'gmlLoadJsonTransactionToMap', maptype.HMAP, maptype.HSITE, ctypes.c_char_p, ctypes.c_int, ctypes.c_int) # def gmlLoadJsonTransactionToMap(_hMap: maptype.HMAP, _hSite: maptype.HSITE, _stream: ctypes.c_char_p, _streamlength: int, _protocol: int) -> HJSON: # return gmlLoadJsonTransactionToMap_t (_hMap, _hSite, _stream, _streamlength, _protocol) # Запросить количество созданных объектов # hJson - идентификатор данных # Возвращает количество созданных объектов # При ошибке возвращает 0 # gmlGetJsonCreateObjectsCount_t = mapsyst.GetProcAddress(curLib,ctypes.c_int,'gmlGetJsonCreateObjectsCount', HJSON) # def gmlGetJsonCreateObjectsCount(_hJson: HJSON) -> int: # return gmlGetJsonCreateObjectsCount_t (_hJson) # Запросить количество обновленных объектов при выполнении транзакций # hJson - идентификатор данных # Возвращает количество обновленных объектов # При ошибке возвращает 0 # gmlGetJsonUpdateObjectsCount_t = mapsyst.GetProcAddress(curLib,ctypes.c_int,'gmlGetJsonUpdateObjectsCount', HJSON) # def gmlGetJsonUpdateObjectsCount(_hJson: HJSON) -> int: # return gmlGetJsonUpdateObjectsCount_t (_hJson) # Запросить количество удаленных объектов при выполнении транзакций # hJson - идентификатор данных # Возвращает количество удаленных объектов # При ошибке возвращает 0 # gmlGetJsonDeleteObjectsCount_t = mapsyst.GetProcAddress(curLib,ctypes.c_int,'gmlGetJsonDeleteObjectsCount', HJSON) # def gmlGetJsonDeleteObjectsCount(_hJson: HJSON) -> int: # return gmlGetJsonDeleteObjectsCount_t (_hJson) # Запросить количество заменённых объектов при выполнении транзакций # hJson - идентификатор данных # Возвращает количество заменённых объектов # При ошибке возвращает 0 # gmlGetJsonReplaceObjectsCount_t = mapsyst.GetProcAddress(curLib,ctypes.c_int,'gmlGetJsonReplaceObjectsCount', HJSON) # def gmlGetJsonReplaceObjectsCount(_hJson: HJSON) -> int: # return gmlGetJsonReplaceObjectsCount_t (_hJson) # Запросить кол-во объектов, присланных в транзакции # hJson - идентификатор данных # При ошибке возвращает 0, иначе кол-во присланных объектов # gmlGetJsonTransactionObjectsCount_t = mapsyst.GetProcAddress(curLib,ctypes.c_int,'gmlGetJsonTransactionObjectsCount', HJSON) # def gmlGetJsonTransactionObjectsCount(_hJson: HJSON) -> int: # return gmlGetJsonTransactionObjectsCount_t (_hJson) # Записать завершающие теги # hgml - идентификатор открытой схемы для записи GML # format - формат вывода данных: GML, JSON (см. OGCSERVICETYPE) # targetfilename - имя выходного файла # matched - количество найденных объектов # returned - количество объектов, записанных в GML # data - данные которые необходимо дописать в конец файла # datasize - размер данных # saveClosedTag - сохранять закрывающий тэг # При ошибке возвращает ноль gmlSaveFileEnd_t = mapsyst.GetProcAddress(acceslib,ctypes.c_int,'gmlSaveFileEnd', ctypes.c_int, maptype.PWCHAR, ctypes.c_int, ctypes.c_int) def gmlSaveFileEnd(_format: int, _targetfilename: mapsyst.WTEXT, _matched: int, _returned: int) -> int: return gmlSaveFileEnd_t (_format, _targetfilename.buffer(), _matched, _returned) gmlSaveFileEndInMemory_t = mapsyst.GetProcAddress(acceslib,ctypes.c_int,'gmlSaveFileEndInMemory', ctypes.c_void_p, ctypes.c_int, ctypes.c_int) def gmlSaveFileEndInMemory(_handle: ctypes.c_void_p, _matched: int, _returned: int) -> int: return gmlSaveFileEndInMemory_t (_handle, _matched, _returned) gmlSaveFileEndEx_t = mapsyst.GetProcAddress(acceslib,ctypes.c_int,'gmlSaveFileEndEx', ctypes.c_int, maptype.PWCHAR, ctypes.c_int, ctypes.c_int, ctypes.c_char_p, ctypes.c_int) def gmlSaveFileEndEx(_format: int, _targetfilename: mapsyst.WTEXT, _matched: int, _returned: int, _data: ctypes.c_char_p, _datasize: int) -> int: return gmlSaveFileEndEx_t (_format, _targetfilename.buffer(), _matched, _returned, _data, _datasize) gmlSaveFileEndPro_t = mapsyst.GetProcAddress(acceslib,ctypes.c_int,'gmlSaveFileEndPro', ctypes.c_int, maptype.PWCHAR, ctypes.c_int, ctypes.c_int, ctypes.c_char_p, ctypes.c_int, ctypes.c_int) def gmlSaveFileEndPro(_format: int, _targetfilename: mapsyst.WTEXT, _matched: int, _returned: int, _data: ctypes.c_char_p, _datasize: int, _saveClosedTag: int = 1) -> int: return gmlSaveFileEndPro_t (_format, _targetfilename.buffer(), _matched, _returned, _data, _datasize, _saveClosedTag) # Записать собранную статистику по запросу (кол-во объектов, семантик, слоёв и др.) # format - формат вывода данных: GML, JSON (см. OGCSERVICETYPE) # targetfilename - имя выходного GML-файла # statistic - указатель на собранную статистику по предыдущим запросам gmlSaveStatistic_t = mapsyst.GetProcAddress(acceslib,ctypes.c_void_p,'gmlSaveStatistic', ctypes.c_int, maptype.PWCHAR, ctypes.c_void_p) def gmlSaveStatistic(_format: int, _targetfilename: mapsyst.WTEXT, _statistic: ctypes.c_void_p) -> ctypes.c_void_p: return gmlSaveStatistic_t (_format, _targetfilename.buffer(), _statistic) # Освободить собранную статистику по запросу # statistic - указатель на собранную статистику по предыдущим запросам gmlFreeStatistic_t = mapsyst.GetProcAddress(acceslib,ctypes.c_void_p,'gmlFreeStatistic', ctypes.c_void_p) def gmlFreeStatistic(_statistic: ctypes.c_void_p) -> ctypes.c_void_p: return gmlFreeStatistic_t (_statistic) # Записать отсортированный массив в файл # format - формат вывода данных: GML, JSON (см. OGCSERVICETYPE) # targetfilename - имя выходного GML-файла # sortlist - указатель на массив объектов, собранный по предыдущим запросам # number_begin - номер начльного объекта или 0 # count - вывод определенного количества объектов gmlSaveSortList_t = mapsyst.GetProcAddress(acceslib,ctypes.c_int,'gmlSaveSortList', ctypes.c_void_p, ctypes.c_int, maptype.PWCHAR, ctypes.c_int, ctypes.c_int) def gmlSaveSortList(_sortlist: ctypes.c_void_p, _format: int, _targetfilename: mapsyst.WTEXT, _number_begin: int = 0, _count: int = 0) -> int: return gmlSaveSortList_t (_sortlist, _format, _targetfilename.buffer(), _number_begin, _count) # Освободить массив # sortlist - указатель на массив объектов, собранный по предыдущим запросам gmlFreeSortList_t = mapsyst.GetProcAddress(acceslib,ctypes.c_void_p,'gmlFreeSortList', ctypes.c_void_p) def gmlFreeSortList(_sortlist: ctypes.c_void_p) -> ctypes.c_void_p: return gmlFreeSortList_t (_sortlist) # Запрос габаритов объектов файла geojson и числа объектов # name - имя файла geojson # border - габариты объектов в радианах в СК WGS-84 # Если число объектов не может быть определено, то возвращает -1 # При ошибке возвращает 0 gmlGetJSONBorder_t = mapsyst.GetProcAddress(acceslib,ctypes.c_int,'gmlGetJSONBorder', maptype.PWCHAR, ctypes.POINTER(maptype.DFRAME)) def gmlGetJSONBorder(_name: mapsyst.WTEXT, _border: ctypes.POINTER(maptype.DFRAME)) -> int: return gmlGetJSONBorder_t (_name.buffer(), _border) # Проверить, что это geojson # Функция ищет узел "type":"FeatureCollection" # name - имя файла geojson # При ошибке возвращает 0 gmlCheckJSON_t = mapsyst.GetProcAddress(acceslib,ctypes.c_int,'gmlCheckJSON', maptype.PWCHAR) def gmlCheckJSON(_name: mapsyst.WTEXT) -> int: return gmlCheckJSON_t (_name.buffer()) # Проверить, что это geojson # Функция ищет узел "type":"FeatureCollection" # stream - входной файл в памяти # streamlength - длина файла # При ошибке возвращает 0 gmlCheckJSONFromStream_t = mapsyst.GetProcAddress(acceslib,ctypes.c_int,'gmlCheckJSONFromStream', ctypes.c_char_p, ctypes.c_int) def gmlCheckJSONFromStream(_stream: ctypes.c_char_p, _streamlength: int) -> int: return gmlCheckJSONFromStream_t (_stream, _streamlength) # Импортировать данные из файла KML/KMZ на карту (без настройки ключей из RSC) # kmlname - имя файла KML/KMLZ # hmap - идентификатор открытых данных (документа) # hsite - идентификатор открытой пользовательской карты в документе # hwnd - идентификатор (окна или функции обратного вызова Linux) для сообщений о ходе процесса WM_PROGRESSBAR # error - поле для записи кода ошибки # При ошибке возвращает ноль mapLoadKmlToMapEx_t = mapsyst.GetProcAddress(acceslib,ctypes.c_int,'mapLoadKmlToMapEx', maptype.PWCHAR, maptype.HMAP, maptype.HSITE, maptype.HMESSAGE, ctypes.POINTER(ctypes.c_int)) def mapLoadKmlToMapEx(_kmlname: mapsyst.WTEXT, _hmap: maptype.HMAP, _hsite: maptype.HSITE, _hwnd: maptype.HMESSAGE, _error: ctypes.POINTER(ctypes.c_int)) -> int: return mapLoadKmlToMapEx_t (_kmlname.buffer(), _hmap, _hsite, _hwnd, _error) # Открыть файл KML/KMZ # kmlname - имя файла KML # При ошибке возвращает ноль, иначе - идентификатор открытого файла KML # mapOpenKml_t = mapsyst.GetProcAddress(curLib,HKML,'mapOpenKml', maptype.PWCHAR, ctypes.POINTER(ctypes.c_int), ctypes.c_int) # def mapOpenKml(_kmlname: mapsyst.WTEXT, _error: ctypes.POINTER(ctypes.c_int), _selectstyle: int) -> HKML: # return mapOpenKml_t (_kmlname.buffer(), _error, _selectstyle) # Закрыть доступ к файлу KML/KMZ и освободить ресурсы # hkml - идентификатор доступа к файлу kml, созданный функцией mapOpenKml # mapCloseKml_t = mapsyst.GetProcAddress(curLib,ctypes.c_void_p,'mapCloseKml', HKML) # def mapCloseKml(_hkml: HKML) -> ctypes.c_void_p: # return mapCloseKml_t (_hkml) # Запросить число стилей