Имеем некую пользовательскую ГИС с вебмордой, написанную на 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?
Непонятный MappingService и можно ли его подключить к QGIS
-
- Новоприбывший
- Сообщения: 7
- Зарегистрирован: 26 мар 2018, 16:57
- Репутация: 0
- Откуда: Краснодар
-
- Новоприбывший
- Сообщения: 7
- Зарегистрирован: 26 мар 2018, 16:57
- Репутация: 0
- Откуда: Краснодар
Re: Непонятный MappingService и можно ли его подключить к QGIS
Вообщем кому интересно, заморачиваться не стал, написал на скорую руку код на 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
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 19 гостей