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

Отображение карт в GeoServer

Добавлено: 28 янв 2015, 14:27
tlav
День добрый.

Есть PostGIS пока для тестирования с таблицей-слоем точечных объектов в формате geometry(POINT(x,y)),
где значения точек - в проекции ПКО Нефедовой.
Есть GeoServer, в котором я пытаюсь не первый день отобразить данные из PostGIS.
Думая, что проблема в отстутствии нужной проекции в геосервере,
я добавила в файл espg.properties следующее (для srid=33000)
33000=PROJCS["kavr",
GEOGCS["pulk_42",
DATUM["D_Pulkovo_1942",
SPHEROID["Krasovsky_1940",6378245.0,298.3]],
PRIMEM["Greenwich",0.0],
UNIT["Degree",0.0174532925199433]],
PROJECTION["Equidistant_Conic"],
PARAMETER["False_Easting",0.0],
PARAMETER["False_Northing",0.0],
PARAMETER["Central_Meridian",100.0],
PARAMETER["Standard_Parallel_1",46.548696],
PARAMETER["Standard_Parallel_2",71.568357],
PARAMETER["Latitude_Of_Origin",54.0],
UNIT["Meter",1.0]]

Но слой карты с помощью openlayers в Geoserver так и не отображается. В чем моя ошибка?
Проблема не в PostGIS. Данные из нее прекрасно вытягиваются.
Может до загрузки в PostGIS нужно пересчитать координаты в широту и долготу?
Какие формулы могут оптимально это сделать? (Я уже в математической картографии порылась,
но с места не сдвинулась)
Спасибо заранее.

Re: Отображение карт в GeoServer

Добавлено: 28 янв 2015, 14:33
Andrey Zhukov
Что в настройках публикации сервиса стоит?

Re: Отображение карт в GeoServer

Добавлено: 29 янв 2015, 12:26
tlav
В геосервере, в настройках слоя нет родной SRS (не добавляется и не доступно)
В Объявленной SRS указана моя.
В охватах - родной охват X от -33000 до 33000
по Y от -33000 до 33000 (рамка моей карты)
Если посчитать широту/долготу ограничивающего поля,
то получается бред: X от 99,48 град до 100,5, а по Y от 53,7 до 54,3.
Впечатление такое что из формул взяты параметры - 100 градусов и 54 градуса.
Какими формулами можно координаты моей проекции
корректно преобразовать в широту/долготу ?

Re: Отображение карт в GeoServer

Добавлено: 29 янв 2015, 13:01
SergeyRyzhkov
Вам надо определится именно с системой координат!

Посмотрите примерный алгоритм (очень упрощенно) работы:
1. На клиенте (например openlayers) определена СК для отображения данных
2. При перемещении карты клиент посылает запрос на сервер для получения данных для отображения. Например, WMS,WFS,WMTS, да какой угодно (зависит от планина на клиенте). Клиент помимо прочего в запросе указывает bbox текущего вида карты и СК
3. Сервер приняв запрос должен получить данные из источника и сформировать ответ (рендеринг и т.д.).
Так вот сервер принимая запрос "смотрит" на СК указанную, смотрит на СК в котрой хранятся данные, получает данные на bbox и пытается выполнить перепроицирование, чтобы вернуть клиенту данные в той СК, в которой он (клиент) просит.

Так вот Вы подумайте какие СК на каждом шаге у Вас, скажите, приведите код OL, мы если что поможем

Re: Отображение карт в GeoServer

Добавлено: 29 янв 2015, 22:09
Andrey Zhukov
1. Версия GeoServer?
2. В настройках стоит "Оставить Объявленную"?
3. Реальное положение точек не в указанных диапазонах широт-долгот?

Re: Отображение карт в GeoServer

Добавлено: 02 фев 2015, 08:56
Филиппов Владислав
Может до загрузки в PostGIS нужно пересчитать координаты в широту и долготу?
я бы так сделал

Re: Отображение карт в GeoServer

Добавлено: 10 фев 2015, 11:04
tlav
Добрый день.
Мое положение так и не сдвинулось с мертвой точки.
В этот раз я загрузила объекты из примеров, сначала сконвертировав
из шейпа в PostGIS, а затем попыталась опубликовать в GeoServer
Результат тот же. Пустой экран. Все рамки правильно посчитаны...
Моя версия GeoServer 2.6-snapshot, при установке yum'ом был автоматически выбран.
Уважаемые форумчане, у кого-нибудь данные из PostGIS вызывали ли
проблему при публикации в GeoServer?
В слоях, которые идут в качестве примеров с GeoServer нет слоев из PostGIS!!!

Re: Отображение карт в GeoServer

Добавлено: 10 фев 2015, 11:20
Филиппов Владислав
1. а что написано в geoserver.log ?
2. видно ли ваши данные в desktop-ных ГИС: QGIS, OpenJUMP, KOSMO, etc?

Re: Отображение карт в GeoServer

Добавлено: 11 фев 2015, 10:30
tlav
Обратила внимание на следующее при настройке слоя.
В разделе "Обновить тип объекта" стоит желтый треугольник, предупреждающий об ошибке и
при нажатии на "..." возникает следующее

Rendering process failed java.io.IOExceptionorg.postgresql.util.PSQLException:
ОШИБКА: нет доступа к отношению population ( population - название таблицы в PostGIS)

Re: Отображение карт в GeoServer

Добавлено: 11 фев 2015, 10:48
tlav
С предыдущим сообщением разобралась, недостаточно было прав пользователя.
Теперь следующее сообщение видимо классическое для GeoServer'a
Reloading a feature type will cause any existing connections to its data store to be severed: in flight requests might fail as a result

Re: Отображение карт в GeoServer

Добавлено: 11 фев 2015, 10:59
Andrey Zhukov
Это просто предупреждение. В принципе, показу данных могли мешать как раз урезанные права.
Попробуйте еще раз посмотреть данные в GeoServer и в каком-нибудь настольном ПО.

Re: Отображение карт в GeoServer

Добавлено: 12 фев 2015, 09:59
tlav
Вы были правы, это были предупреждения. Карта появилась, но похоже в цилиндрической проекции,
хотя я указала родную проекцию Нефедовой (8159). Что можно добавить для отображения карты в моей проекции?

Re: Отображение карт в GeoServer

Добавлено: 19 фев 2015, 11:13
tlav
Спасибо большое, проблема с отображением решена.

Re: Отображение карт в GeoServer

Добавлено: 20 фев 2015, 09:10
Andrey Zhukov
А расскажите, пожалуйста, как в итоге все решили?

Re: Отображение карт в GeoServer

Добавлено: 16 мар 2015, 13:57
tlav
Проблему к сожалению решила частично, но могу поделиться с этапами успешного появления на экране Geoserver'a карты России. Сначала исправила координаты X и Y, которые были неверно симпортированы в PostGIS. После решения проблемы в охватах вместо -33000 и 33000 получились нормальные значения: Мин(-5 900; -1 875) до Макс(3 765; 3 415). Затем оказалось, что отсутствовали права пользователя Geoserver'а на доступ к этой таблице (гранты нужно выставить в PostGIS).

А часть нерешенного вопроса следующая. Почему-то Широта/долгота ограничивающего поля - в пределах Мин (104,8;59,98) и Макс (104,98;60,03). Как сделать нормальные пределы?

Из-за этого у меня нет возможности на карте отображать широту и долготу. Впечатление такое, что расчет формулы, который делает Geoserver неверен. Я изменила файл espg.properties для X и Y (исходные данные требовали это): PARAMETER["False_Easting",4583.0], PARAMETER["Central_Meridian",105.0], PARAMETER["Latitude_Of_Origin",60.0]