как подключить WFS в Leaflet

Mapserver, GeoServer, MapGuide, Google и другое ПО для веб-картографии
gornak
Активный участник
Сообщения: 146
Зарегистрирован: 30 авг 2015, 16:38
Репутация: 25
Контактная информация:

как подключить WFS в Leaflet

Сообщение gornak » 07 июл 2016, 16:43

Помогите разобраться!
опубликовал WFS сервис на Nextgis.com и на QGISCloud
не могу подключить в leaflet (использую плагин https://github.com/Flexberry/Leaflet-WFST)
по-видимому ругается параметр typeNS:
насколько понимаю данные сервисы не создают NameSpace (проверяю ?SERVICE=WFS&VERSION=1.0.0&REQUEST=GetCapabilities)
пример кода:

Код: Выделить всё

  var boundaries = new L.WFS({
    url: 'http://mygis.nextgis.com/api/resource/6/wfs',
    typeNS: '',
    typeName: 'kvly',
    crs: L.CRS.EPSG3857,
    geometryField: 'geom',
    style: {
      color: 'blue',
      weight: 2
    }
  }).addTo(map);
ошибок не выдает, просто не подключает данные

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Статьи: 33
Проекты: 9
Репутация: 526
Ваше звание: Author
Контактная информация:

Re: как подключить WFS в Leaflet

Сообщение Denis Rykov » 08 июл 2016, 07:41

А я думаю, что проблема тут вовсе не в typeNS, а банально CORS.
Spatial is now, more than ever, just another column- The Geometry Column.

gornak
Активный участник
Сообщения: 146
Зарегистрирован: 30 авг 2015, 16:38
Репутация: 25
Контактная информация:

Re: как подключить WFS в Leaflet

Сообщение gornak » 08 июл 2016, 19:30

Denis Rykov писал(а):а банально CORS
то есть CRS?
QGISCloud раздает в 4326, проблема та же
и получается с NEXTGIS.com вообще не подключить?

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Статьи: 33
Проекты: 9
Репутация: 526
Ваше звание: Author
Контактная информация:

Re: как подключить WFS в Leaflet

Сообщение Denis Rykov » 08 июл 2016, 21:16

Нет, именно CORS. Пока да, WFS сервисы с nextgis.com не подключить в своё веб приложение (можно конечно, если вы сможете развернуть прокси на том же домене, что и ваша leaflet карта), думаем что можно сделать.
Spatial is now, more than ever, just another column- The Geometry Column.

gornak
Активный участник
Сообщения: 146
Зарегистрирован: 30 авг 2015, 16:38
Репутация: 25
Контактная информация:

Re: как подключить WFS в Leaflet

Сообщение gornak » 11 июл 2016, 09:46

Denis Rykov писал(а): WFS сервисы с nextgis.com не подключить в своё веб приложение
в то же время WMS подключается без проблем,в чем разница?
Denis Rykov писал(а):думаем что можно сделать
следует ждать обновления сервиса?будет ли публиковаться новость о появлении данной возможности?

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Статьи: 33
Проекты: 9
Репутация: 526
Ваше звание: Author
Контактная информация:

Re: как подключить WFS в Leaflet

Сообщение Denis Rykov » 11 июл 2016, 11:46

gornak писал(а):в то же время WMS подключается без проблем,в чем разница?
Разница в том, что в одном случае используется AJAX, в другом - нет.
gornak писал(а):следует ждать обновления сервиса?будет ли публиковаться новость о появлении данной возможности?
Конечно стоит, мы обязательно об этом сообщим.
Spatial is now, more than ever, just another column- The Geometry Column.

gornak
Активный участник
Сообщения: 146
Зарегистрирован: 30 авг 2015, 16:38
Репутация: 25
Контактная информация:

Re: как подключить WFS в Leaflet

Сообщение gornak » 20 июл 2016, 08:23

Denis Rykov писал(а):Пока да, WFS сервисы с nextgis.com не подключить в своё веб приложение
Может кто знает, на каких облачных сервисах можно разместить данные таким образом, чтобы их можно было редактировать по WFS-T через leaflet расположенный на другом домене? Или может в облаке предоставляется дисковое пространство, на котором можно разместить html страницу, чтобы обойти COSR?

Аватара пользователя
SergeyRyzhkov
Гуру
Сообщения: 909
Зарегистрирован: 02 июл 2014, 19:13
Репутация: 203
Ваше звание: GP-экотеррористы
Откуда: Санкт-Петербург
Контактная информация:

Re: как подключить WFS в Leaflet

Сообщение SergeyRyzhkov » 27 июл 2016, 11:46

Попробуйте Перед вашим урлом к сервису приписать прокси, например
http://crossorigin.me
Например http://crossorigin.me/http://[ваш урл]

gornak
Активный участник
Сообщения: 146
Зарегистрирован: 30 авг 2015, 16:38
Репутация: 25
Контактная информация:

Re: как подключить WFS в Leaflet

Сообщение gornak » 19 сен 2016, 11:38

SergeyRyzhkov писал(а):Попробуйте Перед вашим урлом к сервису приписать прокси, например
Попробовал не смотря на
Denis Rykov писал(а):Пока да, WFS сервисы с nextgis.com не подключить в своё веб приложение
, результат следующий:
для WMS работает,
а для WFS ошибка см. картинку
ошибка1.png
ошибка1.png (118.34 КБ) 5112 просмотров
посмотрел POST запрос:

Код: Выделить всё

<wfs:DescribeFeatureType xmlns:wfs="http://www.opengis.net/wfs" service="WFS" version="1.1.0"><TypeName
>:kvly</TypeName></wfs:DescribeFeatureType>
,отправил через RESTClient:
если обращаться напрямую на nextgis то приходит нормальный ответ, если через прокси, то такой же как и на картинке
при этом, если запускать собственно скрипт с прямым адресом(страница и все скрипты на локальном компьютере) то ошибка следующая(CORS)
ошибка2.png
ошибка2.png (126.12 КБ) 5112 просмотров
Помогите разобраться, почему на локальном компе в qgis и через RESTClient сервис доступен, а через leaflet и прокси нет причем в случае прокси вроде как CORS не ругается. Есть ли еще идеи как решить проблему подключения слоя?

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Статьи: 33
Проекты: 9
Репутация: 526
Ваше звание: Author
Контактная информация:

Re: как подключить WFS в Leaflet

Сообщение Denis Rykov » 19 сен 2016, 12:51

Spatial is now, more than ever, just another column- The Geometry Column.

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Статьи: 33
Проекты: 9
Репутация: 526
Ваше звание: Author
Контактная информация:

Re: как подключить WFS в Leaflet

Сообщение Denis Rykov » 19 сен 2016, 13:44

В качестве временного решения можно попробовать следующие плагины:

https://addons.mozilla.org/ru/firefox/a ... verywhere/ (Firefox)
https://chrome.google.com/webstore/deta ... ihlkkiljbi (Chrome)

И ещё, на время тестирования лучше уменьшить максимальное количество отдаваемых фич для слоя.
Spatial is now, more than ever, just another column- The Geometry Column.

gornak
Активный участник
Сообщения: 146
Зарегистрирован: 30 авг 2015, 16:38
Репутация: 25
Контактная информация:

Re: как подключить WFS в Leaflet

Сообщение gornak » 20 сен 2016, 10:28

Спасибо,за совет!
Насчет прокси понял, что он не поддерживает POST запросы.
Попробовал плагины,результат следующий:
в консоль приходит ответ с координатами, но слой не отрисовывается может из-за того, что пришлось внести изменения в код плагина WFST - убрать двоеточие(хотя для DescribeFeatureType работает с двоеточием) , разделяющее NameSpase(которого по сути нет??) и Name, написал разработчикам, вот страница проблемы https://github.com/Flexberry/Leaflet-WFST/issues/25 , там приложены скрины и код.

Но я все равно не понимаю, почему ни QGIS ни RestClient ни обычному GET-CORS не мешает ???Ведь все запускается с одного и того же локального хоста...или дело в XHR ?

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Статьи: 33
Проекты: 9
Репутация: 526
Ваше звание: Author
Контактная информация:

Re: как подключить WFS в Leaflet

Сообщение Denis Rykov » 20 сен 2016, 11:26

Насчёт namespace, он есть, так что код можно было для этого не трогать:

Код: Выделить всё

typeNS: 'fs'
Я проверил - координаты и у меня приходят, но слой на карте не отрисовывается, хотя никаких ошибок в консоли нет. Посмотрю код.

Что касается CORS, то он имеет смысл только в контексте браузера, QGIS и прочие плагины к нему никакого отношения не имеют.
Spatial is now, more than ever, just another column- The Geometry Column.

kuzkok
Интересующийся
Сообщения: 34
Зарегистрирован: 21 янв 2011, 08:31
Проекты: 1
Репутация: 7
Откуда: Пермь

Re: как подключить WFS в Leaflet

Сообщение kuzkok » 20 сен 2016, 11:58

Объекты не парсятся потому что плагин писался под WFS версии 1.1.0, в частности там есть жестко зашитые namespace'ы xml:

Код: Выделить всё

L.XmlUtil = {
  // comes from OL
  namespaces: {
    xlink: "http://www.w3.org/1999/xlink",
    xmlns: "http://www.w3.org/2000/xmlns/",
    xsd: "http://www.w3.org/2001/XMLSchema",
    xsi: "http://www.w3.org/2001/XMLSchema-instance",
    wfs: "http://www.opengis.net/wfs",
    gml: "http://www.opengis.net/gml",
а сервер nextgis работает в версии WFS 2.0.0, даже если и затребована другая версия.
Для того чтобы заработало в частном случае можно подправить значения для полей wfs и gml:

Код: Выделить всё

    wfs: "http://www.opengis.net/wfs/2.0",
    gml: "http://www.opengis.net/gml/3.2",
[/s]
хотя нет не поможет, ещё в нескольких местах есть жёстко забитые строки под стандарт 1.1.0

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Статьи: 33
Проекты: 9
Репутация: 526
Ваше звание: Author
Контактная информация:

Re: как подключить WFS в Leaflet

Сообщение Denis Rykov » 20 сен 2016, 13:54

NextGIS умеет WFS 1.0 и 2.0, с 1.0 этот плагин тоже не работает?

[ Сообщение с мобильного устройства ]
Spatial is now, more than ever, just another column- The Geometry Column.

Ответить

Вернуться в «Веб-картография»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 20 гостей