- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
TL:DR
我想将 GeoJSON 格式的 GeoServer WFS FeatureCollection 反序列化为 GeometryField
/GeometryCollection
。
让我们从模型开始:
class Layer(models.Model):
name = models.CharField(max_length=50)
layer = GeometryCollectionField(null=True)
和序列化器:
class LayerSerializer(GeoFeatureModelSerializer):
class Meta:
model = Layer
geo_field = 'layer'
fields = ('id', 'name', 'layer')
现在示例 WFS GeoJSON 如下所示:
{
"type": "FeatureCollection",
"totalFeatures": 1,
"features": [
{
"type": "Feature",
"id": "some_id",
"geometry": {
"type": "MultiLineString",
"coordinates": [
[
[4.538638998513776, 50.4674721021459],
[4.5436667765043754, 50.47258379613634],
[4.548444318495443, 50.47744374212726],
...
},
"geometry_name": "the_geom",
"properties": {
...
}
}
],
"crs": {
"type": "name",
"properties": {
"name": "urn:ogc:def:crs:EPSG::4326"
}
}
}
}
在尝试反序列化上述内容时,出现以下错误:
"layer": [
"Unable to convert to python object:
Invalid geometry pointer returned from \"OGR_G_CreateGeometryFromJson\"."
]
<小时/>
PS:我更喜欢一种解决方案(如果存在),不需要修改 GeoJSON 即可将其转换为 GeometryCollection
,就像我所做的那样成功了。
最佳答案
我也遇到过类似的情况。我认为问题在于解析 GeoJSON,因为它已转换为 Python 字典。我使用 json.dump
将其恢复为 JSON 格式。
这就是我解决问题的方法。首先是为 GIS 领域制作一个字段序列化器。就我而言,我使用了 GEOSGeometry:
#serializers.py
from django.contrib.gis.geos import GEOSGeometry
import json
class GeometryFieldSerializer(serializers.Field):
def to_representation(self, instance):
if instance.footprint:
instance = json.loads(instance.footprint.geojson)
else:
instance = None
return instance
def to_internal_value(self, data):
data = str(json.dumps(data))
meta = {"footprint": GEOSGeometry(data)}
return meta
之后,您可以将其合并到您的主序列化器中。例如:
#serializers.py
class ModelSerializer(serializers.ModelSerializer):
footprint = GeometryFieldSerializer(source='*')
class Meta:
model = Model
这是我要 POST 的示例 JSON:
{"name": "test",
"footprint": {"type": "Polygon",
"coordinates": [[ [121.37, 14.02], [121.62, 14.02],
[121.62, 14.26], [121.37, 14.26],
[121.37, 14.02] ]]}
}
关于python - 如何反序列化 GeoServer WFS GeoJSON?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51752001/
我最近尝试在 Lubuntu 14.04 服务器上安装带有 Tomcat7 的 GeoServer,但遇到了很多问题,因为 Tomcat7 的 Java 默认版本设置为 1.7。昨晚我为此苦苦挣扎,我
有人知道为什么geoserver在设置图层时不实现直接sql查询吗? 最佳答案 开发人员还没有抽出时间来解决这个问题。 (对此功能的需求并不大,因为 GeoServer 可以像表格一样轻松地提供数据库
这几天一直在纠结一个大问题——如何通过Geoserver获取矢量图 block ?我找了很多文档和博客,有一些对问题有用的资源,一步一步操作很容易: http://suite.opengeo.org/
我是 GeoServer/数据库世界的新手。我以前从未做过任何数据库工作,但作为学生实习的一部分,我需要使用 GeoServer 设置 WMS。 我在独立模式下使用 GeoServer 2.0.1(使
我试图通过在geoserver中使用WFS GetFeature来获取一些按GML格式的日期过滤的数据,但该操作忽略了时间参数,只返回一个包含所有数据的巨大GML文件。这是我正在使用的查询: http
我想在我的 tomcat Web 服务器中运行 geoserver web archive。我使用的是 tomcat 8。 我从 geoserver 下载 GeoServer 2.7.1.1 web
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 想改进这个问题?将问题更新为 on-topic对于堆栈溢出。 6年前关闭。 Improve this qu
我正在使用 Geoserver 2.1.1 版、Postgres 9 和 PostGIS 2.0 我想要实现的目标应该(我认为!)非常直截了当。我想在 map 上绘制一条线,代表地球表面两个城市之间的
我一直在搜索很多,但没有找到关于 Geoserver 可以处理多少并发用户的明确经验法则,无论是在 Tomcat 还是 Glassfish 容器中。 假设在高峰时段可能有大约 400 个并发用户,并且
我正在对 Geoserver 源代码进行一些更改。 我使用了来自 here 的快速入门指南.我完成了指南中的所有步骤,效果很好。当我使用 web-app/org.geoserver.web/start
我准备使用redis作为geoserver的web缓存,所以需要了解geoserver中的数据库连接。我已经在 Eclipse 中导入了 geoserver,并且有两个名为 gs-sec-jdbc 和
本文整理了Java中org.geoserver.wfs.WFSException类的一些代码示例,展示了WFSException类的具体用法。这些代码示例主要来源于Github/Stackoverfl
本文整理了Java中org.geoserver.wms.WMSInfoImpl类的一些代码示例,展示了WMSInfoImpl类的具体用法。这些代码示例主要来源于Github/Stackoverflow
本文整理了Java中org.geoserver.catalog.WMTSStoreInfo类的一些代码示例,展示了WMTSStoreInfo类的具体用法。这些代码示例主要来源于Github/Stack
本文整理了Java中org.geoserver.security.WorkspaceAccessLimits类的一些代码示例,展示了WorkspaceAccessLimits类的具体用法。这些代码示例
本文整理了Java中org.geoserver.wfs.WFSGetFeatureOutputFormat类的一些代码示例,展示了WFSGetFeatureOutputFormat类的具体用法。这些代
本文整理了Java中org.geoserver.ysld.YsldHandler类的一些代码示例,展示了YsldHandler类的具体用法。这些代码示例主要来源于Github/Stackoverflo
我正在使用 Geoserver 和 SQL Server 2008。 我有一个表,其中有一列 [geography] 类型。我能够看到 Geoserver 中显示的表(我已经安装了 SQL Serve
我使用 geoserver 2.0.1,我使用 textsymbolizer 来标记 map 上的要素。地理服务器可能不支持 '' 标签,因为我尝试更改字体大小、字体系列或 .. 它没有效果。如何在不
我在 OS X 10.10 上的 Tomcat 7.0.62 上运行 GeoServer 2.7.1。我已经使用 Homebrew 安装了 Tomcat,并将 GeoServer 2.7.1 war
我是一名优秀的程序员,十分优秀!