У меня есть простое приложение с серверной частью PosGIS. Я хочу иметь страницу для каждой функции в базе данных. Я использовал пули и маршрутизацию URL.
В объектах PostGIS полигон хранится в столбце geom, который моделируется как MultiPolygonField с использованием geodjango.
Какой самый простой способ проанализировать этот столбец geom в geojson, чтобы я мог добавить его на карту листовки?
Ниже приведен мой код, который пытается использовать сериализатор geojson, хотя я получаю этот код ошибки на своей странице.
Views.py
from django.shortcuts import render
from Countries_App.models import Countries
from django.core.serializers import serialize
# Create your views here.
def show_country(request, country_slug):
# Create a context dictionary which we can pass
# to the template rendering engine.
context_dict = {}
try:
# Can we find a category name slug with the given name?
# If we can't, the .get() method raises a DoesNotExist exception.
# So the .get() method returns one model instance or raises an exception.
country = Countries.objects.get(slug=country_slug)
Country_geojson = serialize('geojson',
Countries.objects.get(slug=country_slug))
# We also add the category object from
# the database to the context dictionary.
# We'll use this in the template to verify that the category exists.
context_dict['Countries'] = country
except KeyError:
country = []
context_dict['Countries'] = Countries
country_slug = none
Country_geojson = serialize('geojson',
Country.objects.filter(name=country_slug))
# Go render the response and return it to the client.
return render(request, 'Countries_App/country.html', {'context_dict':
context_dict, 'Country_geojson': Country_geojson})
urls.py
urlpatterns = [
url(r'^admin/', admin.site.urls),
# url(r'^country/(?P<country_slug>[\w\-]+)/$',
GeoJSONLayerView.as_view(model=Countries), name='data'),
url(r'^country/(?P<country_slug>[\w\-]+)/$', views.show_country,
name='show_country'),
]
Выдержка из шаблона, в котором я пытаюсь добавить геойсон на карту листовки
var geojsonfeature = '{{ Countries_geojson }}'
L.geoJSON(geojsonFeature).addTo(map);
Правильно ли я подхожу к этому? Какой самый простой способ просто добавить геометрию полигона PostGIS в шаблон? Принимая во внимание, я только хочу добавить геометрию объекта, который соответствует слаг.