SAS.Planet + Geoserver + СУБД или SQlite
-
- Новоприбывший
- Сообщения: 10
- Зарегистрирован: 14 ноя 2019, 14:07
- Репутация: 3
- Откуда: Краснодар
SAS.Planet + Geoserver + СУБД или SQlite
Здравствуйте.
1. Скачал большую карту с помощью SAS.Planet
2. Склеил в geotif с разбивкой по изображениям 100 000 * 100 000 пикселей. Получил сотни файлов.
3. Формирую с помощью GDAL пирамиды изображений (image pyramid)
4. Создаю в Geoserver хранилище из пирамиды. Получаю сотни хранилищ (каждая создается в ручную).
5. Отображаю все слои чз группу слоев.
Работать с таким объемом слоев, хранилищ... крайне не приятно. Хочется сделать красиво:
Sas.Planet скачивает карты в СУБД которая подключена для редактирований к QGIS и подключена для отображения к geoserver.
Обратил внимание, что SAS.Planet может хранить кэш в базах данных (СУБД, SQlite). Появилась идея подключить кэш SAS.Planet в виде СУБД к Geoserver.
1. При выборе в SAS.Planet кэш = СУБД получаю ошибку.
Скачивание...
Error: Нет подключения к СУБД
Информации по настройки такого кэша на сайте SAS.Planet не нашел. Поделитесь опытом как исправить ошибку?
2. При выборе в SAS.Planet кэш = SQlite
Программа создает множество файлах (*.sqlitedb) в структуре папок. Можно ли объединить эти файлы в одну базу данных и далее умудриться ее подключить к geoserver?
В geoserver нет выбора загрузки из SQlite(, но есть вариант подключить PostgreSQL только она в категории векторных данных.
Прошу поделиться опытом.
1. Скачал большую карту с помощью SAS.Planet
2. Склеил в geotif с разбивкой по изображениям 100 000 * 100 000 пикселей. Получил сотни файлов.
3. Формирую с помощью GDAL пирамиды изображений (image pyramid)
4. Создаю в Geoserver хранилище из пирамиды. Получаю сотни хранилищ (каждая создается в ручную).
5. Отображаю все слои чз группу слоев.
Работать с таким объемом слоев, хранилищ... крайне не приятно. Хочется сделать красиво:
Sas.Planet скачивает карты в СУБД которая подключена для редактирований к QGIS и подключена для отображения к geoserver.
Обратил внимание, что SAS.Planet может хранить кэш в базах данных (СУБД, SQlite). Появилась идея подключить кэш SAS.Planet в виде СУБД к Geoserver.
1. При выборе в SAS.Planet кэш = СУБД получаю ошибку.
Скачивание...
Error: Нет подключения к СУБД
Информации по настройки такого кэша на сайте SAS.Planet не нашел. Поделитесь опытом как исправить ошибку?
2. При выборе в SAS.Planet кэш = SQlite
Программа создает множество файлах (*.sqlitedb) в структуре папок. Можно ли объединить эти файлы в одну базу данных и далее умудриться ее подключить к geoserver?
В geoserver нет выбора загрузки из SQlite(, но есть вариант подключить PostgreSQL только она в категории векторных данных.
Прошу поделиться опытом.
-
- Новоприбывший
- Сообщения: 10
- Зарегистрирован: 14 ноя 2019, 14:07
- Репутация: 3
- Откуда: Краснодар
Re: SAS.Planet + Geoserver + СУБД или SQlite
Оказывается SAS.Planet умеет экспортировать тайлы в БД .mbtiles. Установил на geoserver плагин MBTiles Extension, импортировал созданную базу данных из SAS.Planet как хранилище mbtiles и очень был рад когда все отобразилось в моем ПО и в OpenLayers.
Если БД размером в 6Гб, то geoserver очень медленно формирует тайлы на выдачу.
Подскажите пожалуйста, как моему ПО, которое хочет получить ТАЙЛ из базы (Request: getMap .....) Наиболее простым и быстрым путем выдать эти тайлы???
Если БД размером в 6Гб, то geoserver очень медленно формирует тайлы на выдачу.
Подскажите пожалуйста, как моему ПО, которое хочет получить ТАЙЛ из базы (Request: getMap .....) Наиболее простым и быстрым путем выдать эти тайлы???
-
- Новоприбывший
- Сообщения: 10
- Зарегистрирован: 14 ноя 2019, 14:07
- Репутация: 3
- Откуда: Краснодар
Re: SAS.Planet + Geoserver + СУБД или SQlite
Добрый день. В итоге сделал все на пирамидах. Карту России разбил на квадраты. Каждому квадрату создан слой с пирамидой тайлов. Объединил все слои в группу.
Если группа состоит из одного или двух слоев (у каждого слоя свой BBOX) то работает все шустро. Если в группу добавляю все слои (100 шт.), то Geoserver начинает тормозить, при этом Запрашиваемый Bbox попадает только в один слой, не затрагивая остальные. На каждый слой установлен стиль с параметром масштаба.
Я думаю, что Geoserver получает getMap запрос от клиента, считывает параметр Bbox и откидывает слои, которые в этот Bbox не попадают. По такой логике можно подключать тысячи слоев, ведь операция проверки вхождения в Bbox не должна занимать много ресурсов процессора, но у меня это не работает.
Если группа состоит из одного или двух слоев (у каждого слоя свой BBOX) то работает все шустро. Если в группу добавляю все слои (100 шт.), то Geoserver начинает тормозить, при этом Запрашиваемый Bbox попадает только в один слой, не затрагивая остальные. На каждый слой установлен стиль с параметром масштаба.
Я думаю, что Geoserver получает getMap запрос от клиента, считывает параметр Bbox и откидывает слои, которые в этот Bbox не попадают. По такой логике можно подключать тысячи слоев, ведь операция проверки вхождения в Bbox не должна занимать много ресурсов процессора, но у меня это не работает.
Код: Выделить всё
Request: getMap
Angle = 0.0
BaseUrl = http://192.168.0.163:8080/geoserver/
Bbox = SRSEnvelope[4035416.4679369 : 4035569.3419934, 6022014.8327921 : 6022167.7068486]
BgColor = java.awt.Color[r=255,g=255,b=255]
Buffer = 0
CQLFilter = null
Crs = PROJCS["WGS84 / Google Mercator",
GEOGCS["WGS 84",
DATUM["World Geodetic System 1984",
SPHEROID["WGS 84", 6378137.0, 298.257223563, AUTHORITY["EPSG","7030"]],
AUTHORITY["EPSG","6326"]],
PRIMEM["Greenwich", 0.0, AUTHORITY["EPSG","8901"]],
UNIT["degree", 0.017453292519943295],
AXIS["Longitude", EAST],
AXIS["Latitude", NORTH],
AUTHORITY["EPSG","4326"]],
PROJECTION["Mercator_1SP"],
PARAMETER["semi_minor", 6378137.0],
PARAMETER["latitude_of_origin", 0.0],
PARAMETER["central_meridian", 0.0],
PARAMETER["scale_factor", 1.0],
PARAMETER["false_easting", 0.0],
PARAMETER["false_northing", 0.0],
UNIT["m", 1.0],
AXIS["x", EAST],
AXIS["y", NORTH],
AUTHORITY["EPSG","900913"]]
Elevation = []
Env = {}
Exceptions = INIMAGE
FeatureId = null
FeatureVersion = null
Filter = null
Format = image/png
FormatOptions = {}
Get = true
Height = 256
Interpolations = []
Layers = [org.geoserver.wms.MapLayerInfo@7deb985b, org.geoserver.wms.MapLayerInfo@7c36bfbc]
MaxFeatures = null
Palette = null
RawKvp = {FORMAT=image/png, CRS=EPSG:900913, STYLES=, WIDTH=256, HEIGHT=256, LAYERS=cite:test_L-37, EXCEPTIONS=INIMAGE, SRS=EPSG:3857, REQUEST=GetMap, BBOX=4035416.4679369,6022014.8327921,4035569.3419934,6022167.7068486, VERSION=1.3.0, SERVICE=WMS, TRANSPARENT=TRUE}
RemoteOwsType = null
RemoteOwsURL = null
Request = GetMap
RequestCharset = UTF-8
ScaleMethod = null
Sld = null
SldBody = null
SldVersion = null
SortBy = null
SortByArrays = null
SRS = urn:ogc:def:crs:EPSG:900913
StartIndex = null
StyleBody = null
StyleFormat = sld
Styles = [StyleImpl[ name=UK_RasterScaler_18], StyleImpl[ name=UK_RasterScaler_18]]
StyleUrl = null
StyleVersion = null
Tiled = false
TilesOrigin = null
Time = []
Transparent = true
ValidateSchema = false
Version = 1.3.0
ViewParams = null
Width = 256
-
- Новоприбывший
- Сообщения: 10
- Зарегистрирован: 14 ноя 2019, 14:07
- Репутация: 3
- Откуда: Краснодар
Re: SAS.Planet + Geoserver + СУБД или SQlite
Есть запись в логе Geoserver "Doesn't intersect the coverage BoundingBox ReferencedEnvelope"
т.е. сервер понимает, что слой нам не нужен.
После нее Геосервер еще выводит в лог множество записей касаемо слоев в которые не попадают в BBOX.
Может есть где то опция, чтобы он вообще забывал про эти слои? Что там можно проверять, когда оно не требуется я не понимаю.....
Код: Выделить всё
2020-02-07 13:13:05,912 TRACE [org.geotools.data.shapefile.files] - IndexFile has been closed. Number open: 0
2020-02-07 13:13:05,912 DEBUG [org.geotools.gce.imagemosaic] - The computed CropBoundingBox ReferencedEnvelope[4036463.296925648 : 4036816.81818142, 5989868.774754131 : 5990221.297858711] Doesn't intersect the coverage BoundingBox ReferencedEnvelope[8282169.979662 : 8415753.24121888, 8611822.579249054 : 8736383.882769] resulting in an empty request
2020-02-07 13:13:05,912 DEBUG [org.geotools.gce.imagemosaic] - RequestedBBox empty or null
После нее Геосервер еще выводит в лог множество записей касаемо слоев в которые не попадают в BBOX.
Может есть где то опция, чтобы он вообще забывал про эти слои? Что там можно проверять, когда оно не требуется я не понимаю.....
-
- Новоприбывший
- Сообщения: 10
- Зарегистрирован: 14 ноя 2019, 14:07
- Репутация: 3
- Откуда: Краснодар
Re: SAS.Planet + Geoserver + СУБД или SQlite
Может есть на форуме человек, который хорошо разбирается в Геосервере. Напишите пожалуйста в личку.
-
- Новоприбывший
- Сообщения: 10
- Зарегистрирован: 14 ноя 2019, 14:07
- Репутация: 3
- Откуда: Краснодар
Re: SAS.Planet + Geoserver + СУБД или SQlite
1.Из темы http://www.sasgis.org/mantis/view.php?id=1113 взял TileStorage_DBMS.dll и директория DBMS, в которой 3 файла:
TileStorage_DBMS.PG.sql
TileStorage_DBMS.PG.xql
_ODBC_TileStorage_DBMS.ini
2. Скачать и проинсталлировать СУБД PostgreSQL
postgresql-9.6
и драйвер ODBC к ней
3. Зашел панель управления - Администрирование - Источники данных ODBC (64-разрядная версия) - Системный DNS - настройки ....
Всё по умолчанию, имя DSN PostgreSQL35W, юзер postgres, пароль 123456.
Нажал кнопку Test, - connection successful
4. Запустил SASPlanet.exe
Тип кэша по умолчанию - СУБД
Путь кэша - PostgreSQL35W\$\
Во вкладке "пути" - Базовый путь кэша - .\
внизу окна программы, в информационной строке указан путь - С:\Sas.Planet.190707\PostgreSQL35W\$\sat\z10\x375\y160.jpg
Параметры _ODBC_TileStorage_DBMS.ini
Ошибка - Нет подключения к СУБД
Как устранить ошибку?
TileStorage_DBMS.PG.sql
TileStorage_DBMS.PG.xql
_ODBC_TileStorage_DBMS.ini
2. Скачать и проинсталлировать СУБД PostgreSQL
postgresql-9.6
и драйвер ODBC к ней
3. Зашел панель управления - Администрирование - Источники данных ODBC (64-разрядная версия) - Системный DNS - настройки ....
Всё по умолчанию, имя DSN PostgreSQL35W, юзер postgres, пароль 123456.
Нажал кнопку Test, - connection successful
4. Запустил SASPlanet.exe
Тип кэша по умолчанию - СУБД
Путь кэша - PostgreSQL35W\$\
Во вкладке "пути" - Базовый путь кэша - .\
внизу окна программы, в информационной строке указан путь - С:\Sas.Planet.190707\PostgreSQL35W\$\sat\z10\x375\y160.jpg
Параметры _ODBC_TileStorage_DBMS.ini
Код: Выделить всё
[PostgreSQL35W\$]
Protocol=postgresql
HostName=localhost
Port=5432
Database=postgres
User=postgres
Password=123456
$LOAD_LIBRARY_ALT=C:\Program Files\PostgreSQL\9.6\bin\libpq.dll
$SYNC_SQL_MODE=2
Ошибка - Нет подключения к СУБД
Как устранить ошибку?
-
- Новоприбывший
- Сообщения: 10
- Зарегистрирован: 14 ноя 2019, 14:07
- Репутация: 3
- Откуда: Краснодар
Re: SAS.Planet + Geoserver + СУБД или SQlite
Удалось настроить отображение большой карты. Опишу процесс.
1. Загрузил нужные мне карты в Кэш SAS.Planet.
2. Склеил маленькие кусочки карты в более крупные (GeoTIFF размер 10 000 * 10 000, компрессия JPEG) и получил набор файлов в паке.
3. Повторил пункт 2 для всех масштабов карты.
4. Запустил геосервер и добавил хранилище ImageMosaic для каждого масштаба. (Указывал путь к папке с тайлами определенного масштаба.
5. Полученные Слои объеденил в группу.
6. У каждого слоя свой стиль с фильтром по масштабу.
7. Клиентская программа обращается к групповому слою и геосервер выдает ей требуемые тайлы.
Спасибо разработчикам SAS.Planet, чудо программа!!! С СУБД потихоньку разбираюсь. Хочу, чтобы SAS.Planet работал на сервере и загружал тайлы в базу данных, которая расположена в облаке.
Разобраться с Геосервером помог форум https://gis.stackexchange.com. Общаться на форуме помог Яндекс переводчик) На том форуме, дежурный дядька оперативно давал подсказки))))
1. Загрузил нужные мне карты в Кэш SAS.Planet.
2. Склеил маленькие кусочки карты в более крупные (GeoTIFF размер 10 000 * 10 000, компрессия JPEG) и получил набор файлов в паке.
3. Повторил пункт 2 для всех масштабов карты.
4. Запустил геосервер и добавил хранилище ImageMosaic для каждого масштаба. (Указывал путь к папке с тайлами определенного масштаба.
5. Полученные Слои объеденил в группу.
6. У каждого слоя свой стиль с фильтром по масштабу.
7. Клиентская программа обращается к групповому слою и геосервер выдает ей требуемые тайлы.
Спасибо разработчикам SAS.Planet, чудо программа!!! С СУБД потихоньку разбираюсь. Хочу, чтобы SAS.Planet работал на сервере и загружал тайлы в базу данных, которая расположена в облаке.
Разобраться с Геосервером помог форум https://gis.stackexchange.com. Общаться на форуме помог Яндекс переводчик) На том форуме, дежурный дядька оперативно давал подсказки))))
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 5 гостей