Страница 1 из 1
Как корректно нагенерить mbtiles?
Добавлено: 30 дек 2016, 13:56
kliver
Есть у меня есть растры в некой местной ск.
Генерю из них виртуальный растр
Код: Выделить всё
"C:\Program Files\GDAL\gdalbuildvrt" -srcnodata "0 0 0" -vrtnodata "0 0 0" D:\VTagilOFP\projected\ekb.vrt D:\VTagilOFP\projected\*.tif
Далее открываю полученный файл в TileMill, выставляю границы, указываю параметры ск, и экспортирую как mbtiles.
Публикую на Geoserver, ск определяет по умолчанию как 3857. В просмоторщике слоев изображение есть, координаты конечно фиг пойми где.
И вот беда в qgis я не могу просмотреть этот слой с Geoserver. Пишет:
Недействительный слой: WMS provider Не удалось расчитать границы Raster layer Недействительный источник данных (источник: wms, URI: contextualWMSLegend=0&crs=EPSG:3857&dpiMode=7&featureCount=10&format=image/png&layers=cite:vtagil%20tilemill&styles=raster&url=
http://localhost:8080/geoserver/ows?version%3D1.1.1%26
Сам файл могу открыть как растровый слой и ложится он куда нужно.
Что я упускаю из виду?
Может есть какой-то способ генерации Mbtiles именно в нужной ск (хотя вроде пишут что только в 3857 можно нагенерить)?
Re: Как корректно нагенерить mbtiles?
Добавлено: 30 дек 2016, 19:54
ericsson
Согласно
https://github.com/mapbox/mbtiles-spec/ ... .1/spec.md - границы должны быть определены в метаданных в WGS84, а тайлы нарезаны в соответствии со спецификацией TMS в Spherical Mercator. Так что не знаю, о какой местной СК вы ведете речь. Перепроецируйте данные и будет вам счастье.
Re: Как корректно нагенерить mbtiles?
Добавлено: 09 янв 2017, 17:43
kliver
Окей, я пересчитал растры в epsg:3857(вроде это тот мертатор что нужен). Но результат прежний.
Вот мои шаги:
1 Записываю в растры ск
Код: Выделить всё
@echo off
set ext=.tif
set extout=.tif
FOR /f "tokens=*" %%G IN ('dir /b D:\ofp\*.tif') DO ("C:\Program Files\GDAL\gdalwarp" -s_srs "+proj=параметры моей ск" -t_srs EPSG:3857 D:\ofp\%%~nG%ext% D:\ofp\proj_mercator\%%~nG%extout%)
2 Делаю виртуальный растр
Код: Выделить всё
"C:\Program Files\GDAL\gdalbuildvrt" -srcnodata "0 0 0" -vrtnodata "0 0 0" D:\ofp\proj_mercator\rastr.vrt D:\ofp\proj_mercator\*.tif
Далее я испробовал два пути это: нагенерить тайлы и нагенерить mbtiles
Оба способа дают одинаковый конечный результат поэтому опишу генерацию тайлов потому что их хотя бы гдал делает а mbtiles делает TileMill
Код: Выделить всё
"C:\Program Files\GDAL\gdal2tiles.py" -r near -a 0,0,0 -z 10-18 D:\ofp\proj_mercator\rastr.vrt D:\ofp\tms_mercator
Все далее я запускаю mapproxy с простым конфигом:
Код: Выделить всё
services:
demo:
wms:
srs: ['EPSG:3857']
image_formats: ['image/png']
layers:
- name: tagil_mercator_layer
title: WMS layer tagil mercator
sources: [tagil_mercator_cache]
- name: tagil_mbtiles_layer
title: WMS layer tagil mbtiles
sources: [tagil_mbtiles_cache]
caches:
tagil_mercator_cache:
sources: [tagil_mercator_source]
grids: [GLOBAL_MERCATOR]
tagil_mbtiles_cache:
sources: []
grids: [GLOBAL_MERCATOR]
cache:
type: mbtiles
filename: D:/dev/mbtiles/export/tagil3857.mbtiles
sources:
tagil_mercator_source:
type: tile
grid: GLOBAL_MERCATOR
url: file:///D:/VTagilOFP/tms_mercator/%(z)s/%(x)s/%(y)s.png
format: image/png
Что я упускаю?
Re: Как корректно нагенерить mbtiles?
Добавлено: 09 янв 2017, 19:07
ericsson
Что пишет gdalinfo про любой из растров, который вы получаете после первого шага?
Re: Как корректно нагенерить mbtiles?
Добавлено: 10 янв 2017, 00:20
kliver
Код: Выделить всё
D:\dev>"C:\Program Files\GDAL\gdalinfo.exe" D:\ofp\proj_mercator\ofp-246-2.tif
Driver: GTiff/GeoTIFF
Files: D:\ofp\proj_mercator\ofp-246-2.tif
Size is 10006, 10026
Coordinate System is:
PROJCS["WGS 84 / Pseudo-Mercator",
GEOGCS["WGS 84",
DATUM["WGS_1984",
SPHEROID["WGS 84",6378137,298.257223563,
AUTHORITY["EPSG","7030"]],
AUTHORITY["EPSG","6326"]],
PRIMEM["Greenwich",0,
AUTHORITY["EPSG","8901"]],
UNIT["degree",0.0174532925199433,
AUTHORITY["EPSG","9122"]],
AUTHORITY["EPSG","4326"]],
PROJECTION["Mercator_1SP"],
PARAMETER["central_meridian",0],
PARAMETER["scale_factor",1],
PARAMETER["false_easting",0],
PARAMETER["false_northing",0],
UNIT["metre",1,
AUTHORITY["EPSG","9001"]],
AXIS["X",EAST],
AXIS["Y",NORTH],
EXTENSION["PROJ4","+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +
x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs"],
AUTHORITY["EPSG","3857"]]
Origin = (6671620.229734762600000,7839590.732170520400000)
Pixel Size = (0.185258113288467,-0.185258113288467)
Metadata:
AREA_OR_POINT=Area
TIFFTAG_RESOLUTIONUNIT=2 (pixels/inch)
TIFFTAG_XRESOLUTION=508
TIFFTAG_YRESOLUTION=508
Image Structure Metadata:
INTERLEAVE=PIXEL
Corner Coordinates:
Upper Left ( 6671620.230, 7839590.732) ( 59d55'55.86"E, 57d23'12.46"N)
Lower Left ( 6671620.230, 7837733.334) ( 59d55'55.86"E, 57d22'40.09"N)
Upper Right ( 6673473.922, 7839590.732) ( 59d56'55.81"E, 57d23'12.46"N)
Lower Right ( 6673473.922, 7837733.334) ( 59d56'55.81"E, 57d22'40.09"N)
Center ( 6672547.076, 7838662.033) ( 59d56'25.84"E, 57d22'56.28"N)
Band 1 Block=10006x1 Type=Byte, ColorInterp=Red
Band 2 Block=10006x1 Type=Byte, ColorInterp=Green
Band 3 Block=10006x1 Type=Byte, ColorInterp=Blue
Re: Как корректно нагенерить mbtiles?
Добавлено: 10 янв 2017, 01:51
ericsson
Система координат похожа на правду. Углы тоже похожи (это вам виднее, конечно). Вероятно, первый шаг выполнен верно.
Проверяем второй. Что пишет тот же gdalinfo про ваш D:\ofp\proj_mercator\rastr.vrt ?
И что-то мне подозрителен синтаксис gdalbuildvrt - вы пишете
Код: Выделить всё
D:\ofp\proj_mercator\rastr.vrt D:\ofp\proj_mercator\*.tif
А я бы сначала сделал в каталоге с растрами
а потом
Код: Выделить всё
C:\Program Files\GDAL\gdalbuildvrt" -srcnodata "0 0 0" -vrtnodata "0 0 0" -input_file_list D:\ofp\proj_mercator\tifflist.txt D:\ofp\proj_mercator\rastr.vrt
Чтобы уж в явном виде все было.
Re: Как корректно нагенерить mbtiles?
Добавлено: 10 янв 2017, 09:59
kliver
Вроде то же самое что и у отдельного растра.
Код: Выделить всё
D:\dev>"C:\Program Files\GDAL\gdalinfo.exe" D:\VTagilOFP\proj_mercator\rasrt.vrt
Driver: VRT/Virtual Raster
Files: D:\VTagilOFP\proj_mercator\rasrt.vrt
D:\VTagilOFP\proj_mercator\ofp-246-2.tif
D:\VTagilOFP\proj_mercator\ofp-246-4.tif
D:\VTagilOFP\proj_mercator\ofp-247-1.tif
D:\VTagilOFP\proj_mercator\ofp-247-2.tif
D:\VTagilOFP\proj_mercator\ofp-247-3.tif
D:\VTagilOFP\proj_mercator\ofp-247-4.tif
Size is 29998, 20061
Coordinate System is:
PROJCS["WGS 84 / Pseudo-Mercator",
GEOGCS["WGS 84",
DATUM["WGS_1984",
SPHEROID["WGS 84",6378137,298.257223563,
AUTHORITY["EPSG","7030"]],
AUTHORITY["EPSG","6326"]],
PRIMEM["Greenwich",0,
AUTHORITY["EPSG","8901"]],
UNIT["degree",0.0174532925199433,
AUTHORITY["EPSG","9122"]],
AUTHORITY["EPSG","4326"]],
PROJECTION["Mercator_1SP"],
PARAMETER["central_meridian",0],
PARAMETER["scale_factor",1],
PARAMETER["false_easting",0],
PARAMETER["false_northing",0],
UNIT["metre",1,
AUTHORITY["EPSG","9001"]],
AXIS["X",EAST],
AXIS["Y",NORTH],
EXTENSION["PROJ4","+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +
x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs"],
AUTHORITY["EPSG","3857"]]
Origin = (6671620.229734762600000,7839595.358218436100000)
Pixel Size = (0.185235703399780,-0.185235703399780)
Corner Coordinates:
Upper Left ( 6671620.230, 7839595.358) ( 59d55'55.86"E, 57d23'12.54"N)
Lower Left ( 6671620.230, 7835879.345) ( 59d55'55.86"E, 57d22' 7.76"N)
Upper Right ( 6677176.930, 7839595.358) ( 59d58'55.56"E, 57d23'12.54"N)
Lower Right ( 6677176.930, 7835879.345) ( 59d58'55.56"E, 57d22' 7.76"N)
Center ( 6674398.580, 7837737.351) ( 59d57'25.71"E, 57d22'40.16"N)
Band 1 Block=128x128 Type=Byte, ColorInterp=Red
NoData Value=0
Band 2 Block=128x128 Type=Byte, ColorInterp=Green
NoData Value=0
Band 3 Block=128x128 Type=Byte, ColorInterp=Blue
NoData Value=0
Re: Как корректно нагенерить mbtiles?
Добавлено: 10 янв 2017, 10:58
ericsson
Прекрасно. Тайлы в TMS получаются не пустыми (проще смотреть на десятом уровне)?