Страница 1 из 2
Работа с Geoserver, запрос GetFeatureInfo
Добавлено: 04 июн 2009, 09:15
churilova
Здравствуйте!
В Geoserver создала хранилище данных PostGis, смотрю через MapPreview, карта отображается, атрибуты объектов получаем. Исходный код сохраняем в отдельный файл и выкладываем его на web-сервере, карта отображается нормально, но атрибуты не получаем. Я так понимаю, что нужно что-то изменить вот в этой функции:
Код: Выделить всё
map.events.register('click', map, function (e) {
document.getElementById('nodelist').innerHTML = "Loading... please wait...";
var params = {
REQUEST: "GetFeatureInfo",
EXCEPTIONS: "application/vnd.ogc.se_xml",
BBOX: map.getExtent().toBBOX(),
X: e.xy.x,
Y: e.xy.y,
INFO_FORMAT: 'text/html',
QUERY_LAYERS: map.layers[0].params.LAYERS,
FEATURE_COUNT: 50,
Layers: 'chita_map1',
Styles: '',
Srs: 'EPSG:4326',
WIDTH: map.size.w,
HEIGHT: map.size.h,
format: format};
updateFeatureInfoFilters(params);
OpenLayers.loadURL("http://10.4.12.57:8080/geoserver/wms", params, this, setHTML, setHTML);
OpenLayers.Event.stop(e);
});
ну или в этой, но я сомневаюсь:
Код: Выделить всё
function setHTML(response){
window.alert(params.QUERY_LAYERS);
document.getElementById('nodelist').innerHTML = response.responseText;
};
Может кто-то сталкивался с такой проблемой, подскажите решение...
Re: Работа с Geoserver, запрос GetFeatureInfo
Добавлено: 04 июн 2009, 09:48
Konstantin Tokar
Скорее всего это конфликт с защитой браузера. Ваш сайт запускает AJAX запрос для получения инфо, но выполняется запрос на другом домене. Надо с этим как-то побороться.
Re: Работа с Geoserver, запрос GetFeatureInfo
Добавлено: 04 июн 2009, 13:41
churilova
Спасибо большое, проблема действительно была в этом. В ИЕ разрешилась добавлением домена в список разрешенных узлов, а вот найти соответствия в firefox пока не удалось...
Re: Работа с Geoserver, запрос GetFeatureInfo
Добавлено: 04 июн 2009, 14:08
Konstantin Tokar
churilova писал(а):Спасибо большое, проблема действительно была в этом. В ИЕ разрешилась добавлением домена в список разрешенных узлов, а вот найти соответствия в firefox пока не удалось...
Это вообще неправильно - надо другим путём попробовать идти, а именно сделать в фронтенде сайта проксирование ссылки на сайт геосервера, тогда не надо будет нарушать политику безопасности на клиенте.
Re: Работа с Geoserver, запрос GetFeatureInfo
Добавлено: 10 июн 2009, 17:29
churilova
Konstantin Tokar писал(а):Это вообще неправильно - надо другим путём попробовать идти, а именно сделать в фронтенде сайта проксирование ссылки на сайт геосервера, тогда не надо будет нарушать политику безопасности на клиенте.
А можно немного поподробнее? В какую сторону копать? mod_proxy к апачу?
Re: Работа с Geoserver, запрос GetFeatureInfo
Добавлено: 11 июн 2009, 08:58
Mavka
Re: Работа с Geoserver, запрос GetFeatureInfo
Добавлено: 15 июн 2009, 09:01
churilova
Спасибо, Mavka! Сделали, ошибка доступа исчезла, но все равно ничего не работает

Может быть, подскажете какие-нибудь примеры, статьи и т. д. по настройке wfs? Потому что у меня в самом html-файле все также, как во всех готовых примерах работы wfs (wfs-t). Это наталкивает на мысль, что косяк где-то в настройках... даже не понятно чего (OL, wfs, postGIS в конце концов)

...
Re: Работа с Geoserver, запрос GetFeatureInfo
Добавлено: 15 июн 2009, 11:35
Mavka
Перевел раздел по ProxyHost:
http://trac.openlayers.org/wiki/ru_proxyhost
Для WFS запрашивать не приходилось, а с
WMS через прокси у меня работает хорошо.
Re: Работа с Geoserver, запрос GetFeatureInfo
Добавлено: 15 июн 2009, 12:25
churilova
Спасибо, только мы и на английском разобрались
Просто уже не знаем, что и думать, куда копать... Уже на нерусских форумах зависаем

Re: Работа с Geoserver, запрос GetFeatureInfo
Добавлено: 16 июн 2009, 08:10
Mavka
А вы случаем не из простого файла работаете? То есть html-страница не на сервере, а просто файл в браузере открываете. Как то были проблемы со слоями vector.
Re: Работа с Geoserver, запрос GetFeatureInfo
Добавлено: 16 июн 2009, 12:10
Mavka
Специально разобрался с WFS слоем. Получаю аттрибуты так
Создаю слой WFS [у меня он точечный]:
Код: Выделить всё
var wfs_layer = new OpenLayers.Layer.WFS('wfs test',
'http://localhost:8080/geoserver/wfs',
{typename: 'geology:drillhole'},
{extractAttributes: true}
);
Создаю функцию, которая получит управление
Код: Выделить всё
function wfs_info(e) {
alert(e.id + "\n" + e.attributes.name);
}
Теперь контроллер. Все векторные слои должны работать через SelectFeature.
Регистрирую функцию только на событие onSelect, вообще у него есть и другие:
Код: Выделить всё
wfs_ctrl = new OpenLayers.Control.SelectFeature(
wfs_layer,
{onSelect: wfs_info}
);
Добавляем слой и контроллер на карту:
Код: Выделить всё
map.addLayer(wfs_layer);
map.addControl(wfs_ctrl);
wfs_ctrl.activate();
Все. Щелкаем мышкой на нужную точку и запускается функция wfs_info. В параметре 'e' содержится вся информация об объекте:
e.attributes - аттрибутика; в моем примере name - строковое поле в базе PostGIS
e.geometry - геометрия; я не разбирался, что от туда можно вытащить, но в примерах есть
.geometry.getBounds().getCenterLonLat()
.geometry.getArea()
Re: Работа с Geoserver, запрос GetFeatureInfo
Добавлено: 16 июн 2009, 13:03
churilova
За это прям не знаю, как и благодарить

Завтра буду все пробовать!

Re: Работа с Geoserver, запрос GetFeatureInfo
Добавлено: 09 июл 2009, 03:20
churilova
Ну вот я и добралась до прокси-хост и wfs. Базовый слой wms у меня загружается нормально, а вот wfs слои не совсем. Точнее не загружается ни одна feature (они не отрисовываются и при просмотре свойств слоя свойство features - пустое). При этом в логи записывается успешный запрос к /geoserver/wfs... Может быть, проблема в том, что теперь обращение идет через Апач и поэтому где-то неправильно настроены права? Может у кого-нибудь будут другие идеи? Буду рада любому ответу....
Re: Работа с Geoserver, запрос GetFeatureInfo
Добавлено: 04 май 2010, 17:20
nextstopsun
Кто-нибудь уже решил эту проблему?
У меня все тоже самое, только все стоит на MAC OS: PostGIS - Geoserver - Openlayers.
WMS отрабатывает нормально - возвращает картинку и инфо, а WFS не отображается и не отвечает на запросы.
Я пробовал запускать у себя примеры WFS с OpenLayers - и на примере wfsstates (там где wfs США) обнаружил, что при удалении из кода параметра featureNS, WFS перестает отображаться.
Кто может подсказать - за что может отвечать этот параметр?
Или проблема в чем-то другом?
Re: Работа с Geoserver, запрос GetFeatureInfo
Добавлено: 04 май 2010, 18:48
Mavka
Вот мой рабочий код:
Код: Выделить всё
var geol_region = new OpenLayers.Layer.Vector('Участки', {
strategies: [new OpenLayers.Strategy.BBOX],
protocol: new OpenLayers.Protocol.WFS({
url: 'http://localhost:8080/geoserver/wfs',
featureType: 'area',
featureNS: 'http://geology.local/geology',
srsName: 'EPSG:4326',
version: '1.1.0'
}),
styleMap: geol_region_style
});
featureNS - это такой префикс в именах тэгов, если с XML работали то поймете.
В GeoServer по умолчанию "
http://www.openplans.org/topp" (см. Workspaces).