Вставить транзакцию из демо у меня не работает (докер картоза)
Я новичок в геосервер и пытаюсь понять основы. Поэтому ожидайте (я делаю), что я упустил очевидную деталь:-/.
У меня проблема с запросом на вставку транзакции в демоверсиях, доступных в веб-интерфейсе геосервера. Просто он не показывает ничего в превью (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 по поводу этой ошибки.