【问题标题】:Django region data MultiPolygonFieldDjango 区域数据 MultiPolygonField
【发布时间】:2015-07-27 10:42:27
【问题描述】:

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

0106000020E6100000010000000103000000010000000700000000000000003C1EC023000000E690504000000000000D414023000000E63353400000000000344740460000004CD34C400000000080314240460000004C60474000000000003A21408D00000098EE3E400000000000BE34C08D00000098483F4000000000003C1EC023000000E6905040

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

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

【问题讨论】:

    标签: python django geolocation geodjango


    【解决方案1】:

    您显示的数据库中的值是几何图形的众所周知的二进制 (WKB) 格式。如果您使用的是 PostGIS,则可以以更易于阅读的众所周知的文本 (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 几何对象,然后将其传递给您的字段。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-02
      • 1970-01-01
      • 1970-01-01
      • 2020-11-02
      相关资源
      最近更新 更多