Страница 1 из 1

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

Добавлено: 23 окт 2019, 09:02
97479
Имеем некую пользовательскую ГИС с вебмордой, написанную на 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?

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

Добавлено: 25 окт 2019, 10:40
97479
Вообщем кому интересно, заморачиваться не стал, написал на скорую руку код на 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