Django区域数据MultiPolygonField

时间:2015-07-27 10:42:27

标签: python django geolocation geodjango

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

0106000020E6100000010000000103000000010000000700000000000000003C1EC023000000E690504000000000000D414023000000E63353400000000000344740460000004CD34C400000000080314240460000004C60474000000000003A21408D00000098EE3E400000000000BE34C08D00000098483F4000000000003C1EC023000000E6905040

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

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

1 个答案:

答案 0 :(得分:2)

您显示的数据库中的值是几何的标准二进制(WKB)格式。如果您使用的是PostGIS,则可以使用Well Known Text(WKT)格式查看相同的几何图形,这种格式更易于阅读。这是一个查询,显示您发布为WKT的WKB几何:

SELECT ST_AsEWKT('0106000020E6100000010000000103000000010000000700000000000000003C1EC023000000E690504000000000000D414023000000E63353400000000000344740460000004CD34C400000000080314240460000004C60474000000000003A21408D00000098EE3E400000000000BE34C08D00000098483F4000000000003C1EC023000000E6905040'::geometry)

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

因此,您需要编写一个解析器,将.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几何体对象,并将其传递给您的字段。