Я загрузил несколько мультиполигонов Shapefile в Geodjango, чтобы показать их в виде слоя на карте Leaflet. Но на веб-сайте слой не отображается, только сама карта.
Данные геометрии хранятся в базе данных Geodjango следующим образом:
from django.contrib.gis.db import models
class wgo(models.Model):
(some more variables)
poly = models.MultiPolygonField(srid=4326)
Я передаю мультиполигоны с помощью geojson и сериализую, какитак:
wcrds = wgo.objects.filter(id=wid)
gridone = serialize('geojson', wcrds.all())
return render(request, 'result.html', {'gridone': gridone})
И когда я осматриваю страницу, я вижу, что данные геоджонса действительно попадают в html:
var Hlayer = new L.GeoJSON(
{"type": "FeatureCollection", "crs": {"type": "name", "properties": {"name": "EPSG:4326"}}, "features": [{"type": "Feature", "properties": {"wijkcode": "WK036356", "wijknaam": "Middenmeer", "poly": "SRID=4326;MULTIPOLYGON (((4.93714288723798 52.3576900936898, 4.93742729807085 52.3577390397678,)))", "pk": "909"}, "geometry": null}]}
, {
style: Hstyle
}
);
var mymap = L.map('mapid').setView([52.3701, 4.8967], 13);
var OpenStreetMap_Mapnik = L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
maxZoom: 19,
attribution: '© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'
}).addTo(mymap);
(я вынул большинство координат для краткостисакэ). Похоже, что geojson не понял, что переменная poly имеет геометрию.
Я вижу координаты геоджона с квадратными скобками вокруг них на примерах сайтов, в отличие от круглых на моем.
Я импортировал шейп-файл напрямую через отображение слоев Геоджанго, следуя Геоджангоучебник . Кроме того, я просматривал и манипулировал этим шейп-файлом с помощью ogrinfo, ogr2ogr и, в Python, GDAL osgeo без проблем.
Есть идеи, как заставить Геоджанго и геойсон передавать координаты в нужном формате в Leaflet? Заранее спасибо.