Вставить транзакцию из демо у меня не работает (докер картоза)

Я новичок в геосервер и пытаюсь понять основы. Поэтому ожидайте (я делаю), что я упустил очевидную деталь:-/.

У меня проблема с запросом на вставку транзакции в демоверсиях, доступных в веб-интерфейсе геосервера. Просто он не показывает ничего в превью (tasmania_roads), как я ожидаю. Вместо этого демоверсия обновления работает нормально. Ниже описано, как воспроизвести.

Я установил geoserver+postgis от kartoza на dockerhub на моей рабочей станции linux.

https://hub.docker.com/r/kartoza/geoserver/

и это работает нормально с:

$ docker pull kartoza/postgis
$ docker pull kartoza/geoserver  
$ docker run --name "postgis" -d -t kartoza/postgis
$ docker run --name "geoserver" --link postgis:postgis -p 8080:8080 -d -t kartoza/geoserver`

Веб-интерфейс геосервера находится на 172.17.0.3:8080, и серверы чистые (без доступа администратора на геосервере и postgis).

Теперь я обрезаю код демо-версии (свяжемся с Демо-версиями слева от веб-интерфейса геосервера и выберите запрос "WFS_transactionInsert.xml") и скопирую его в файл (DemoInsert). Я изменяю IP-адрес геосервера, и это результат:

<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://172.17.0.3: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>

Наконец я отправляю запрос геосерверу:

curl -X POST -d @DemoInsert -H "Content-Type: text/xml" http://172.17.0.3:8080/geoserver/wfs

и ответ:

<?xml version="1.0" encoding="UTF-8"?>
<wfs:WFS_TransactionResponse version="1.0.0" xmlns:wfs="http://www.opengis.net/wfs" xmlns:ogc="http://www.opengis.net/ogc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/wfs http://172.17.0.3:8080/geoserver/schemas/wfs/1.0.0/WFS-transaction.xsd">
<wfs:InsertResult>
  <ogc:FeatureId fid="new0"/>
</wfs:InsertResult> 
<wfs:TransactionResult> 
  <wfs:Status> 
    <wfs:SUCCESS/> 
  </wfs:Status> 
</wfs:TransactionResult>
</wfs:WFS_TransactionResponse>

(здесь я добавил несколько новых строк).

Но ничего не происходит на карте, которую я вижу в Data, Layer Preview в веб-интерфейсе геосервера. Обратите внимание, что подобный трюк с демонстрацией транзакции обновления работает отлично.

Кто-нибудь может мне помочь?

Спасибо...

1 ответ

Вы сказали GeoServer, что добавляемая вами функция находится в EPSG:4326 (это srsName="http://www.opengis.net/gml/srs/epsg.xml#4326") но ваши координаты

494475.71056415,5433016.8189323 494982.70115662,5435041.95096618

которые явно не по широте и долготе градусов. Таким образом, GeoServer добавил их, но они очень далеки от Тасмании, поэтому вы не сможете их видеть, если вы не уменьшите их слишком много, и тогда они будут слишком маленькими, чтобы их видеть.

Поэтому вам нужно либо использовать правильную информацию о проекции для вашей геометрии (я не уверен, но, может быть, EPSG:3758 Web Mercator?) Или предоставить координаты в формате широты / долготы.

Вы также можете поднять ошибку на GeoServer Jira по поводу этой ошибки.

Другие вопросы по тегам