1

我是 geoserver 的新手,我正在尝试了解基础知识。所以期望(我愿意)我错过了一个明显的细节:-/。

我对地理服务器 Web 界面中可用的演示中的插入事务请求有疑问。简而言之,正如我所料,它在预览版 (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 上没有管理员访问权限)。

现在我剪切演示的代码(链接地理服务器 Web 界面左侧的 Demos 并选择请求“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>

(在这里我添加了一些换行符)。

但是我在地理服务器 Web 界面的数据、图层预览中看到的地图上没有任何反应。请注意,Update Transaction 演示中的类似技巧非常有效。

任何人都可以帮助我吗?

谢谢...

4

1 回答 1

2

您已经告诉 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上提出有关此错误的错误。

于 2015-11-26T09:04:45.317 回答