Страница 2 из 2
Re: как подключить WFS в Leaflet
Добавлено: 20 сен 2016, 15:10
gornak
Denis Rykov писал(а):Насчёт namespace, он есть, так что код можно было для этого не трогать
да могу подтвердить,тоже дошел до этого методом тыка
-моя вина отсутствие знаний и понимания собственно стандартов ogc
Denis Rykov писал(а): QGIS и прочие плагины к нему никакого отношения не имеют
но RestClient- это же браузер? (обещаю буду учить "матчасть")
kuzkok писал(а): ещё в нескольких местах есть жёстко забитые строки под стандарт 1.1.0
попробую их найти)), а как по вашему мнению(навскидку), если проблема в этом, то можно ли их подогнать под версии с которыми работает nextgis.com, и насколько это трудозатратно?
Re: как подключить WFS в Leaflet
Добавлено: 20 сен 2016, 15:14
kuzkok
С 1.0 тоже не работает. Тестировался он на ответах с геосервера, так что возможно некоторые пункты стандарта не учтены.
Можно всё-таки попробовать поменять значения namespace и поменять в L.GML.FeatureType.parse строку
feature.attributes['gml:id'].value на feature.attributes['fid'].value
ЗЫ: что-то я не смог добиться от сервера nextgis ответа для версии 1.0
Код: Выделить всё
<wfs:GetFeature
xmlns:wfs="http://www.opengis.net/wfs"
service="WFS"
outputFormat="text/xml; subtype=gml/3.1.1"
version="1.0.0">
<wfs:Query typeName="fs:kvly" srsName="EPSG:3857"/>
</wfs:GetFeature>
Код: Выделить всё
<wfs:FeatureCollection
timeStamp="2016-09-20T12:08:46.216526"
numberMatched="unknown"
numberReturned="10"
xmlns:fs="http://featureserver.org/fs"
xmlns:wfs="http://www.opengis.net/wfs/2.0"
xmlns:gml="http://www.opengis.net/gml/3.2"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.opengis.net/wfs/2.0
http://schemas.opengis.net/wfs/2.0.0/wfs.xsd
http://www.opengis.net/gml/3.2
http://schemas.opengis.net/gml/3.2.1/gml.xsd">
<gml:featureMember gml:id="1">
<fs:kvly fid="1">
ответ от геосервера на подобный запрос
Код: Выделить всё
<wfs:FeatureCollection
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:nasa="http://nasa.gov"
xmlns:ogc="http://www.opengis.net/ogc"
xmlns:maps="http://boundlessgeo.com"
xmlns:topp="http://www.openplans.org/topp"
xmlns:wfs="http://www.opengis.net/wfs"
xmlns:ows="http://www.opengis.net/ows"
xmlns:gml="http://www.opengis.net/gml"
или сервер nextgis всегда кодирует ответ в gml 3.2?
Re: как подключить WFS в Leaflet
Добавлено: 20 сен 2016, 15:50
gornak
kuzkok писал(а):попробовать поменять значения namespace
то есть
поменять на что ?
Re: как подключить WFS в Leaflet
Добавлено: 20 сен 2016, 15:51
Denis Rykov
Ну у вас же пустая строка была до этого, я предложил поменять на 'fs'.
Re: как подключить WFS в Leaflet
Добавлено: 20 сен 2016, 15:54
kuzkok
gornak писал(а):
поменять на что ?
я про namespace из этого
сообщения, попробовать поменять на то что зачеркнуто
Re: как подключить WFS в Leaflet
Добавлено: 20 сен 2016, 15:58
Denis Rykov
Вот на такой запрос ответ приходит в формате GML2:
Код: Выделить всё
<wfs:GetFeature
xmlns:wfs="http://www.opengis.net/wfs"
service="WFS"
outputFormat="GML2"
version="1.0.0">
<wfs:Query typeName="fs:kvly" srsName="EPSG:3857"/>
</wfs:GetFeature>
Re: как подключить WFS в Leaflet
Добавлено: 20 сен 2016, 16:03
gornak
Denis Rykov писал(а):Ну у вас же пустая строка была до этого, я предложил поменять на 'fs'.
это уже относительно давно сделано, только бессознательно
kuzkok писал(а):я про namespace из этого сообщения, попробовать поменять на то что зачеркнуто
да , "догнал" )), сделал и в 696 строке заменил на
пока результат тот же- отрисовки нет
Re: как подключить WFS в Leaflet
Добавлено: 20 сен 2016, 16:26
kuzkok
Исправил namespace и gml:id=>fid
Re: как подключить WFS в Leaflet
Добавлено: 20 сен 2016, 17:00
Denis Rykov
Спасибо, а в реп добавите исправления или это хардкод?
Re: как подключить WFS в Leaflet
Добавлено: 20 сен 2016, 17:01
gornak
kuzkok писал(а):Исправил namespace и gml:id=>fid
да, верно
проблема была в crs: L.CRS.EPSG3857
а надо crs: L.CRS.EPSG4326
не до конца разобрался с этим параметром, я думал, что это crs загружаемого wfs слоя, оказывается не так?
Потестирую плагин с сервером еще.Спасибо большое.Думаю для всех будет польза.
Re: как подключить WFS в Leaflet
Добавлено: 20 сен 2016, 17:42
kuzkok
Denis Rykov писал(а):Спасибо, а в реп добавите исправления или это хардкод?
Пока хардкод для решения проблемы @gornak. Исправления для работы с WFS 2.0 в плагине будут когда-нибудь позже, хочется чего-нибудь универсального для всех версий, или хотя бы для 1.1 и 2.0, они вроде не сильно друг от друга ушли в синтаксисе.
Re: как подключить WFS в Leaflet
Добавлено: 20 сен 2016, 19:04
kuzkok
У меня ещё некоторое подозрение насчет атрибута fid. В стандарте
WFS 2.0.0 говориться только про gml:id.
А в featureMember, по стандарту GML 3.2, его быть не должно.
Вот описания типов:
Код: Выделить всё
<element name="featureMember" type="gml:FeaturePropertyType"/>
<complexType name="FeaturePropertyType">
<sequence minOccurs="0">
<element ref="gml:AbstractFeature"/>
</sequence>
<attributeGroup ref="gml:OwnershipAttributeGroup"/>
<attributeGroup ref="gml:AssociationAttributeGroup"/>
</complexType>
При запросе сервер должен возвращать следующее:
Код: Выделить всё
<gml:featureMember>
<fs:kvly gml:id="1">
<fs:geom>
...
</fs:geom>
<fs:nkvtxt>1</fs:nkvtxt>
<fs:ar>56</fs:ar>
<fs:lesni4estv>Лужниковское</fs:lesni4estv>
<fs:name>Академическое</fs:name>
</fs:kvly>
</gml:featureMember>
<gml:featureMember>
<fs:kvly gml:id="2">
<fs:geom>
...
</fs:geom>
<fs:nkvtxt>1</fs:nkvtxt>
<fs:ar>56</fs:ar>
<fs:lesni4estv>Дятловское</fs:lesni4estv>
<fs:name>Белавинское</fs:name>
</fs:kvly>
</gml:featureMember>