我是geoserver的新手,我正在尝试了解基础知识。因此,我希望(我确实)忽略了一个明显的细节:-/。
我对geoserver web界面中提供的Demo中的插入事务请求有问题。简单地说,正如我所期望的那样,它没有在预览(tasmania_roads)上显示任何内容。相反,更新演示运行正常。下面是重现的方法。
我已经在linux工作站上的dockerhub上安装了来自kartoza的geoserver+postgis。
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`geoserver web界面位于172.17.0.3:8080,并且服务器是干净的(在geoserver和postgis上没有管理员访问权限)。
现在我剪切了演示的代码(链接到geoserver web界面左侧的演示并选择request "WFS_transactionInsert.xml"),并将其复制到一个文件(DemoInsert)中。我修改了geoserver的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>
最后,我将查询发布到geoserver:
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>(这里我添加了一些换行符)。
但我在geoserver web界面的Data,Layer Preview中看到的地图上没有任何变化。请注意,Update Transaction演示程序中的类似技巧可以完美地发挥作用。
有人能帮我吗?
谢谢..。
发布于 2015-11-26 17:04:45
您已经告诉GeoServer,您要添加的要素是EPSG:4326 (即srsName="http://www.opengis.net/gml/srs/epsg.xml#4326"),但您的坐标是
494475.71056415,5433016.8189323 494982.70115662,5435041.95096618显然不是在纬度和经度上。所以GeoServer已经添加了它们,但是它们离塔斯马尼亚岛很远,所以你看不到它们,除非你把它们放大很多,然后它们就太小看不见了。
因此,您要么需要为几何图形使用正确的投影信息(我不能确定,但可能是EPSG:3758Web墨卡托?)或者以纬度/经度格式提供坐标。
您可能还想在GeoServer Jira上引发关于此错误的错误。
https://stackoverflow.com/questions/33914272
复制相似问题