如何使用GeoServer的REST API指定坐标参考系?

问题描述 投票:0回答:1

我正在将 GeoServer 的 REST API 集成到我们的软件中,但我找不到在创建 Shapefile 数据源或更新图层时如何指定坐标参考系统 (CRS)。

我目前通过 API 所做的是:

  1. 创建工作区
  2. 通过上传 2 个 Shapefile 将 2 个数据存储添加到该工作区。
  3. 创建一个图层组,组合之前自动创建的 2 个图层。

如果我在 2 层上保留默认的

EPSG:404000
,那么它们不会出现在 Leaflet 中,因为
bbox
参数是错误的。我必须在两个图层中手动将
EPSG:404000
(由 API 设置的默认值)更改为
EPSG:4326
,以使图层组显示在 Leaflet 中(
bbox
参数现在是正确的)。

我可以在通过 API 创建图层组时指定 CRS 值,但在创建图层时则不能指定。

如果我通过了

<attribution>
  <title>hello</title>
</attribution>
<bounds>
  <crs>EPSG:4326</crs>
</bounds>

然后图层的标题发生更改,但 CRS 不变。

如何通过API更改图层的CRS值?

谢谢!

geoserver
1个回答
0
投票

与往常一样,任何 REST API 的技巧都是查看来自正确层的响应(尽管在这种情况下,真正的技巧是修复您的 shapefile),所以

http://localhost:8080/geoserver/rest/workspaces/topp/datastores/states_shapefile/featuretypes/states.xml
:

<featureType>
  <name>states</name>
  <nativeName>states</nativeName>
  <namespace>
    <name>topp</name>
    <atom:link xmlns:atom="http://www.w3.org/2005/Atom" rel="alternate" href="http://localhost:8080/geoserver/rest/namespaces/topp.xml" type="application/xml"/>
  </namespace>
  <title>USA Population</title>
  <abstract>This is some census data on the states.</abstract>
  <keywords>
    <string>census</string>
    <string>united</string>
    <string>boundaries</string>
    <string>state</string>
    <string>states</string>
  </keywords>
  <nativeCRS>GEOGCS[&quot;GCS_WGS_1984&quot;,
  DATUM[&quot;WGS_1984&quot;,
    SPHEROID[&quot;WGS_1984&quot;, 6378137.0, 298.257223563]],
  PRIMEM[&quot;Greenwich&quot;, 0.0],
  UNIT[&quot;degree&quot;, 0.017453292519943295],
  AXIS[&quot;Longitude&quot;, EAST],
  AXIS[&quot;Latitude&quot;, NORTH]]</nativeCRS>
  <srs>EPSG:4326</srs>
  <nativeBoundingBox>
    <minx>-124.73142200000001</minx>
    <maxx>-66.969849</maxx>
    <miny>24.955967</miny>
    <maxy>49.371735</maxy>
    <crs>EPSG:4326</crs>
  </nativeBoundingBox>
  <latLonBoundingBox>
    <minx>-124.731422</minx>
    <maxx>-66.969849</maxx>
    <miny>24.955967</miny>
    <maxy>49.371735</maxy>
    <crs>EPSG:4326</crs>
  </latLonBoundingBox>
  <projectionPolicy>FORCE_DECLARED</projectionPolicy>
  <enabled>true</enabled>
  ...

因此,您似乎可以将 XML 中的本机 CRS 和默认 CRS 指定为 WKT 字符串或 EPSG 代码,在您的情况下,您希望使用 EPSG:4326 覆盖本机 CRS(EPSG:40400,这意味着未知) (如果这就是您的数据实际所在的位置)因此,在修改

featuretype
时,您至少需要 POST:

<featureType>
 <srs>EPSG:4326</srs>
 <projectionPolicy>FORCE_DECLARED</projectionPolicy>     
</featureType>

但我怀疑您还需要设置

latLonBoundingBox
除非它看起来正确。

© www.soinside.com 2019 - 2024. All rights reserved.