Непонятный MappingService и можно ли его подключить к QGIS

Вопросы по свободной ГИС QGIS. Сообщения об ошибках, предложения по улучшению, локализация.
Ответить
97479
Новоприбывший
Сообщения: 7
Зарегистрирован: 26 мар 2018, 16:57
Репутация: 0
Откуда: Краснодар

Непонятный MappingService и можно ли его подключить к QGIS

Сообщение 97479 » 23 окт 2019, 09:02

Имеем некую пользовательскую ГИС с вебмордой, написанную на MapExteme (предположительно), которая отображает на карте Яндекса некие png слои.
Если поковыряться в ее клиентской веб части, то видно что для получения этой png картинки "вебморда" делает GET запрос в виде:
http://xxx.yyy.zz.ru/ля/ля-ля/image.png ... SG%3A41001
В ответ приходит png файл:
- размерами в пикселях w=303;h=1036
- границами b=4205280.188526,5470133.228434,4390563.545064,6103949.066886
- и в проекции EPSG%3A41001

Подскажите, что это за формат (на тайловый сервер не похож, так как в ответ всегда прилетает одна картинка целиком)?
Можно ли такой URL как-то прикрутить к QGIS подобно XYZ tiles?

97479
Новоприбывший
Сообщения: 7
Зарегистрирован: 26 мар 2018, 16:57
Репутация: 0
Откуда: Краснодар

Re: Непонятный MappingService и можно ли его подключить к QGIS

Сообщение 97479 » 25 окт 2019, 10:40

Вообщем кому интересно, заморачиваться не стал, написал на скорую руку код на VBA, который кидает этому сервису GET запросы, сохраняет полученные PNG файлы в папку и создает к нему WLD файлы с геопривязкой:

Код: Выделить всё

Declare PtrSafe Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long

Sub getPNGs()
    
    'Moscow district
    minX = 3800000
    maxX = 4500000
    minY = 7100000
    maxY = 7700000
    
    res = 20 'meters/px
    tileSize = 100000 'meters. tileSizeH = TileSizeW
    pngSize = tileSize / res 'px
    
    urlPref = "http://xx.yyy.zzz.ru/bla/bla-bla/image.png;"
    urlSuff = ",EPSG%3A41001;r=96?0.5871203921269625"
    pngPath = "C:\temp\png\"
    
    Kill pngPath & "*.*"
    
    tileIndex = 1
    For iX = minX To maxX Step tileSize
        For iY = minY To maxY Step tileSize
            x1 = CStr(iX)
            x2 = CStr(iX + tileSize)
            y1 = CStr(iY)
            y2 = CStr(iY + tileSize)
            urlBody = "w=" + CStr(pngSize) + ";h=" + CStr(pngSize) + ";b=" + x1 + "," + y1 + "," + x2 + "," + y2
            pngFileName = "image" + CStr(tileIndex)
            success = URLDownloadToFile(0, urlPref + urlBody + urlSuff, pngPath + pngFileName + ".png", 0, 0) = 0
            If success = True Then Call createWLDfile(res, pngPath, pngFileName, x1, y2)
            tileIndex = tileIndex + 1
        Next
    Next
End Sub

Sub createWLDfile(ByVal res, ByVal pngPath, ByVal pngFileName, ByVal x, ByVal y)
    Dim fso As Object
    Set fso = CreateObject("Scripting.FileSystemObject")
    Dim oFile As Object
    Set oFile = fso.CreateTextFile(pngPath + pngFileName + ".wld")
        oFile.WriteLine CStr(res)
        oFile.WriteLine "0"
        oFile.WriteLine "0"
        oFile.WriteLine CStr(-res)
        oFile.WriteLine CStr(x)
        oFile.WriteLine CStr(y)
        oFile.WriteLine ""
    oFile.Close
    Set fso = Nothing
    Set oFile = Nothing
End Sub


Ответить

Вернуться в «QGIS»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 19 гостей