提问人:E Wilson 提问时间:11/13/2023 更新时间:11/13/2023 访问量:33
在 PostgreSQL 数据库中的 WKB POINT 字段中显示 Django 模板中的传单地图坐标
Display leaflet map coordinates in Django template from WKB POINT field in PostgreSQL database
问:
我是GEO的新手。我在存储位置的 PostgreSQL 数据库中有一个 WKB POINT 字段。我的 Django 模板上还有一个传单地图,添加了硬编码的 lat 和 long,它在我的前端显示了一个工作地图。
POINT 示例:0101000020E610000051954507C62C1FC0144708B9E6784840
有人可以建议我如何解码点字段并将纬度和经度插入到我的模板中,以便地图从数据库中更新到正确的位置吗?
如果您需要其他任何模型,请告诉我。任何帮助都表示赞赏。
模板.html
<div style="padding-top: 280px">
<h3 style="padding-bottom: 20px;">Location</h3>
<script>
function map_init_basic (map, options) {
L.marker([11.5, 20.5]).addTo(map);
map.panTo(new L.LatLng(11.737, 20.923));
}
</script>
{% leaflet_map "mymap" callback="window.map_init_basic" %}
答:
0赞
Maimoona Abid
11/13/2023
#1
如果你的数据存储在 PostgreSQL 数据库中,并且你有一个表示它的 Django 模型,你应该将纬度和经度传递给你的模板,并在你的视图中执行 WKB 解码。
你的 models.py 文件应包含此代码
from django.contrib.gis.db import models
class YourModel(models.Model):
location = models.PointField()
views.py 文件应包含此代码
from django.shortcuts import render
from django.contrib.gis.geos import GEOSGeometry
def your_view(request):
# Assuming you have a queryset that retrieves the data from your database
queryset = YourModel.objects.all()
# Extracting latitude and longitude from the POINT field
location_data = []
for instance in queryset:
# Decode WKB and extract coordinates
point = GEOSGeometry(instance.location.wkb)
lat, lon = point.y, point.x
# Append latitude and longitude to the location_data list
location_data.append({'lat': lat, 'lon': lon})
context = {'location_data': location_data}
return render(request, 'your_template.html', context)
现在,您可以通过更新 your_template.html 中的 JavaScript 代码来使用提取的纬度和经度。
这是模板.html文件的更新代码
<div style="padding-top: 280px">
<h3 style="padding-bottom: 20px;">Location</h3>
<script>
function map_init_basic(map, options) {
{% for location in location_data %}
L.marker([{{ location.lat }}, {{ location.lon }}]).addTo(map);
{% endfor %}
// You may want to adjust the center based on your data
map.panTo(new L.LatLng({{ location_data.0.lat }}, {{ location_data.0.lon }}));
}
</script>
{% leaflet_map "mymap" callback="window.map_init_basic" %}
</div>
希望它能:)
评论