我使用openlayer在地图上绘制多边形并将geojson存储到sql server DB和From Stored geojson我想在GeoServer上创建多边形图层并再次使用wms请求在地图上反映多边形图像图块。
因此在地图上绘制并存储到db工作正常。
表列EntityJson看起来像
{
"LatLong": {
"Type": "string",
"Value": "{ \"type\": \"Polygon\", \"coordinates\": [ [ [ -76.2890625, 58.07787626787517 ], [ -95.625, 50.28933925329178 ], [ -84.72656249999999, 41.244772343082076 ], [ -62.22656249999999, 43.32517767999296 ], [ -56.6015625, 48.45835188280866 ], [ -53.78906249999999, 56.9449741808516 ], [ -63.28125, 62.91523303947614 ], [ -76.2890625, 58.07787626787517 ] ] ] }"
}
}
和EntityType是" Area"。
但是对于Next流程来说,在客户端调用WMS请求,我试图通过在GeoServer上使用sql视图查询来创建多边形层,以便动态从db中获取geojson,基于EntityType =" Area& #34;
但我没有得到如何为多边形图层创建sql视图查询以从SqlDB表列EntityJson获取geojson数据。
请有人告诉我。如何从表列中获取多边形geojson并使用sqlview查询在GeoServer上创建多边形图层。
感谢。
答案 0 :(得分:0)
执行此操作的唯一方法是使用字符串替换从JSON构造WKT多边形定义,这将是缓慢且容易出错的。
更好的方法是不将GeoJSON存储在数据库中,而是存储多边形。这样做的简单方法是使用OpenLayers WFS-T支持将功能发送到GeoServer,然后GeoServer将它们正确地写入数据库(如果您以后更改数据库,则以与供应商无关的方式),并且可以通过WMS界面没有额外的努力。
或者,如果你必须使用GeoJson作为传输格式,那么你应该看一下像mongoDB这样的NoSQL数据库,它也可以用作GeoServer中的数据存储。