что я сделал не так при реализации Leaflet Draw. Как использовать WFST в этом конкретном примере?

Я новичок в этой области развития геоинформации. Я следую приведенному ниже потоку архитектуры конвейера для решения проблемы приложения на основе ГИС.

PostGIS - GeoServer - Брошюра

Я настроил свое клиентское приложение для листовок, которое создает плитки на карте. Я также использую некоторые плагины для листовок (например, Draw, zoom), чтобы дать пользователям возможность отмечать и рисовать на карте.

Я могу рисовать и получать функции GeoJSON нарисованного многоугольника, как показано ниже:

GeoJson редактируемых полигонов

Я застрял после этой части выяснения того, как мне нужно отправить нарисованный запрос полигона и получить полигон (который сохранен) программно. Я знаю, что ответ — WFS-T, но как мне использовать это в моем необработанном коде. Вот пример необработанного кода:

Ссылка на необработанный код: https://pastebin.com/wCAHxVc0Follow the link

Рекомендации:

  1. https://gis.stackexchange.com/questions/266402/save-leaflet-drawn-features-with-attributes-to-postgis

  2. https://github.com/Flexberry/Leaflet-WFST


person NMSD    schedule 13.08.2018    source источник
comment
И какую ошибку вы получаете со стороны GeoServer? Какой протокол/метод вы используете для отправки данных из Leaflet в GeoServer? Пожалуйста, будьте конкретны - поскольку ваш вопрос в настоящее время написан, невозможно угадать, что происходит. (См. также: stackoverflow.com/help/how-to-ask)   -  person IvanSanchez    schedule 13.08.2018
comment
@IvanSanchez Я обновил вопрос, я использую протокол WFS для отправки данных. Я смущен здесь тем, как его нужно отправить и получить. Я новичок в этом, поэтому не могу выразить это правильно.   -  person NMSD    schedule 13.08.2018
comment
Все еще трудно понять, что происходит - с одной стороны, никто, кроме вас, не может столкнуться с проблемой (см. stackoverflow.com/help/mcve ). С другой стороны, вы не показываете полное сообщение об ошибке — какой ответ WFS вызывает эти SyntaxError? (подсказка: посмотрите на вкладку сети инструментов разработчика)   -  person IvanSanchez    schedule 14.08.2018
comment
@IvanSanchez пока нет ошибки. Эта синтаксическая ошибка была моей попыткой сохранить с помощью протокола WFS, однако я удалил ее, поскольку она была неправильной. Я не могу понять, как продолжить сохранение json в postgis с помощью Geoserver. Любые подсказки или примеры могут помочь мне понять.   -  person NMSD    schedule 14.08.2018
comment
Итак, вы извлекаете данные из GeoServer с помощью WFS, затем редактируете данные с помощью Leaflet.Draw, а потом не знаете, как отправить данные обратно в GeoServer? Если да, то ответ WFS-T, возможно, в виде github.com/Flexberry/Leaflet-WFST.   -  person IvanSanchez    schedule 14.08.2018
comment
Да... именно в этом суть. Однако этот вопрос ясно объясняет мое состояние: gis.stackexchange.com/questions/266402/.   -  person NMSD    schedule 14.08.2018
comment
Ваше состояние: я не могу запустить npm?   -  person IvanSanchez    schedule 14.08.2018
comment
@IvanSanchez Я пытался клонировать GitHub и использовать библиотеки. Однако я не уверен, как использовать WFS-T в этом необработанном коде. Ссылка на исходный код: pastebin.com/raw/Tbv9AcFs   -  person NMSD    schedule 14.08.2018
comment
Я предлагаю вам отредактировать свой вопрос, чтобы отразить это. Это больше не то, как я могу сохранять и извлекать рисунки листовок с помощью базы данных PostGIS? а что я сделал не так при реализации Leaflet.WFST в этом конкретном примере?   -  person IvanSanchez    schedule 14.08.2018
comment
@IvanSanchez Я нашел ваши слайды ivansanchez.github.io/leaflet-vs- openlayers-slides/#/12 очень полезен. Это действительно помогает мне решить, что мне нужно делать сейчас. Потому что я не могу запустить пример плагина WFS-T. Возможно, пробный пример Openlayer WFST стоил бы обеденного перерыва. Между тем, любая помощь по буклету WFS-T по-прежнему будет моим приоритетом.   -  person NMSD    schedule 15.08.2018


Ответы (1)


Лучший способ понять WFS-T — использовать опцию GeoServer Demo (ссылка: http://localhost:8080/geoserver/web/wicket/bookmarkable/org.geoserver.web.demo.DemoRequestsPage?5). Основная проблема для меня заключалась в том, чтобы выяснить, как вставлять и обновлять детали транзакции. Изучение демонстрации GeoServer дало мне решение.

Вот пример:

var postdata =  "<wfs:Transaction service="WFS" version="1.0.0"   xmlns:wfs="http://www.opengis.net/wfs"   xmlns:topp="http://www.openplans.org/topp"   xmlns:gml="http://www.opengis.net/gml"   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   xsi:schemaLocation="http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.0.0/WFS-transaction.xsd http://www.openplans.org/topp http://localhost:8080/geoserver/wfs/DescribeFeatureType?typename=topp:tasmania_roads"> <wfs:Insert>
        <topp:tasmania_roads>
          <topp:the_geom>
            <gml:MultiLineString srsName="http://www.opengis.net/gml/srs/epsg.xml#4326">
              <gml:lineStringMember>
                <gml:LineString>
                  <gml:coordinates decimal="." cs="," ts=" ">
    494475.71056415,5433016.8189323 494982.70115662,5435041.95096618
                  </gml:coordinates>
                </gml:LineString>
              </gml:lineStringMember>
            </gml:MultiLineString>
          </topp:the_geom>
          <topp:TYPE>alley</topp:TYPE>
        </topp:tasmania_roads>   </wfs:Insert> </wfs:Transaction>"

Этот XML-запрос позже можно использовать для отправки в GeoServer для обработки с помощью вызова AJAX, как показано ниже:

 $.ajax({
    type: "POST",
    url: gs.wfs,
    dataType: "xml",
    contentType: "text/xml",
    data: postdata,
    //TODO: Error handling
    success: function(xml) {  
      //TODO: User feedback
      console.log("Successfully inserted");
    }
  });

Чтобы лучше понять сценарий применения WFS-T, попробуйте перейти по этому URL-адресу: https://georepublic.info/en/blog/2012/leaflet-example-with-wfs-t/. Это должно помочь вам начать работу с WFS-T. Удачного редактирования карты :)

person NMSD    schedule 11.10.2018