小编bla*_*ake的帖子

如何使用视图从 PostGIS 中提取几何图形,然后使用 Django 将其添加到模板中的传单地图中

我想在视图中使用 python 从 PostGIS 数据库中提取多边形几何数据,并将其添加到模板中的传单地图中。最简单的方法似乎是提取数据并使用 Django 视图中的 postgis 函数 ST_AsGeoJSON 将其转换为 GeoJSON,然后将其作为 L.geoJSON(GEOJSON).addTo(map) 函数中的上下文渲染到模板。

这是行不通的。在请求地图页面时,地图现在是空白的,并且似乎无法识别 GeoJSON。我已经能够从视图传递硬编码的多边形并将其添加到地图中,但我的 postgis 数据库中的几何数据根本无效。

这是一个带有硬编码多边形的视图,已成功打印在地图上:

from django.shortcuts import render

def map_view(request, *args, **kwargs):
    geo_json={
        "type": "FeatureCollection",
          "features": [
            {
              "type": "Feature",
              "properties": {},
              "geometry": {
                "type": "Polygon",
                "coordinates": [
                  [
                    [
                      -0.10746002197265625,
                      51.505537109466715
                    ],
                    [
                      -0.11466979980468751,
                      51.498377681772325
                    ],
                    [
                      -0.0968170166015625,
                      51.493568479510415
                    ],
                    [
                      -0.09080886840820312,
                      51.502438390761164
                    ],
                    [
                      -0.10746002197265625,
                      51.505537109466715
                    ]
                  ]
                ]
              }
            }
          ]
        }

    return render(request ,'map.html', {'geo_json': geo_json})

Run Code Online (Sandbox Code Playgroud)

地图模板如下所示:

<!DOCTYPE html>
<html>
<head> …
Run Code Online (Sandbox Code Playgroud)

django geometry postgis geojson leaflet

2
推荐指数
1
解决办法
5307
查看次数

Postgis - ST_within 没有做我想做的事。如何在空心区域中找到一个点?

请参阅丝网印刷。

我在 Postgis 中运行了一个空间查询,以返回地图上的点所在的选区(区域)。该查询使用ST_within该点位于多边形内的函数。

正如您从打印中看到的,该点实际上并不在 York Outer 的多边形区域“内”,尽管从技术上讲您可能会说它在其中“内部”,或者至少 Postgis 是这么认为的。重点实际上在于约克中心。

我确信 Postgis 实际上会返回两者,但由于我只从游标中获取第一条记录,这就是我所看到的。

一个点一次只能位于一个选区,并且此查询返回了错误的选区,或者更确切地说,我向数据库提出了错误的问题。

我应该使用哪个函数来确保我始终返回正确的区域,该区域可能具有中空内部或形状奇怪?

ST_within 允许非重叠点

谢谢

菲尔

postgresql postgis geospatial leaflet

2
推荐指数
1
解决办法
1258
查看次数

标签 统计

leaflet ×2

postgis ×2

django ×1

geojson ×1

geometry ×1

geospatial ×1

postgresql ×1