python - Django 区域数据 MultiPolygonField

标签 python django geolocation geodjango

请原谅我对此的无知。我使用 Geo Django 内置的 MultiPolygonField 来存储区域数据。该字段存储在数据库中的数据如下所示...

0106000020E6100000010000000103000000010000000700000000000000003C1EC023000000E690504000000000000D414023000000E63353400000000000344740460000004CD34C400000000080314240460000004C60474000000000003A21408D00000098EE3E400000000000BE34C08D00000098483F4000000000003C1EC023000000E6905040

我想在这里使用区域数据:http://download.geofabrik.de/europe.html # 但将数据保存为描述该区域范围的.poly 文件。

我的问题是,如何转换 .poly 数据 here以匹配 MultiPolygonField 在数据库中的描述方式?

最佳答案

您显示的数据库中的值是几何图形的众所周知的二进制 (WKB) 格式。如果您使用 PostGIS,则可以以众所周知的文本 (WKT) 格式查看相同的几何图形,这种格式更易于人类阅读。以下是显示您作为 WKT 发布的 WKB 几何图形的查询:

SELECT ST_AsEWKT('0106000020E6100000010000000103000000010000000700000000000000003C1EC023000000E690504000000000000D414023000000E63353400000000000344740460000004CD34C400000000080314240460000004C60474000000000003A21408D00000098EE3E400000000000BE34C08D00000098483F4000000000003C1EC023000000E6905040'::geometry)

要在 GeoDjango 中存储几何图形,您需要使用它接受的输入格式之一,请参阅 Django 文档中的 GEOSGeometryOGRGeometry

因此,您需要编写一个解析器,将 .poly 文件中的坐标转换为 Django 已知的格式(例如 WKT 或 geojson)。

以下示例介绍了如何使用链接的 .poly 数据的前几个坐标构造多重多边形。请注意,最后一个坐标需要与第一个坐标相同才能闭合多边形。

poly = GEOSGeometry('MULTIPOLYGON(((-5.86333200   8.14347501,   -6.70445600   7.47862301,   -3.44929601   6.28074401,   -3.08375301   3.08165901,   -1.71378401   3.10939901,   -5.86333200   8.14347501)))')

要存储几何图形,您可以将 WKT 数据直接作为输入传递到 MultiPolygonField,也可以按照示例构造 poly 几何对象,并将其传递到您的字段。

关于python - Django 区域数据 MultiPolygonField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31650997/

相关文章:

python - GeoDjango:如何从中心点创建 10 公里 x 10 公里大小的边界框

python - 如何为所有模型添加相同的保存方法

mysql - 获取每个月最后一条记录的值(Django)

geolocation - 这个 'address'末尾的代码是什么

python - 如何使用 nltk 正则表达式模式来提取特定的短语 block ?

python - 更改子图中 matplotlib fiddle 图的颜色

python - 从txt文件中读取和写入数字

python - Pandas 系列: conditional rolling standard deviation

objective-c - 将地址转换为 GeoPoint - 服务器端还是客户端?

android - 基于位置的时区