我在Geodjango环境下显示我的地图(来自postgresql数据库)时遇到了麻烦(我猜更麻烦)。 我已经成功地将我的形状文件导入到Posgresql数据库中。然而,每当我尝试查看地图时,我都无法查看。.我还按照步骤安装了所有需要的库,Django,Python和PostgreSQL。.
我是Geodjango的新手,这就是为什么我无法追踪错误......实际上我不知道怎么做......也许我可以从你们那里得到帮助。
我总是收到这些错误。它谈到了模板。.我的项目文件夹中也有我的模板文件夹。.然而它空荡荡的,不知道它是干什么用的。.
你能帮我解决这个问题吗?
非常感谢你们,我真的很感谢你们的帮助。
Environment:
Request Method: GET
Request URL: http://127.0.0.1:8000/admin/APPLICATION/worldborder/245/
Django Version: 1.6.1
Python Version: 2.7.0
Installed Applications:
('django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.admin',
'APPLICATION')
Installed Middleware:
('django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware')
Template Loader Error:
Django tried loading these templates, in this order:
Using loader django.template.loaders.filesystem.Loader:
Using loader django.template.loaders.app_directories.Loader:
C:Python27libsite-packagesdjangocontribadmintemplatesgisadminosm.html (File does not exist)
C:Python27libsite-packagesdjangocontribauthtemplatesgisadminosm.html (File does not exist)
C:Python27libsite-packagesdjangocontribadmintemplatesgisadminosm.html (File does not exist)
Template error:
In template C:Python27libsite-packagesdjangocontribadmintemplatesadminincludesfieldset.html, error at line 19
gis/admin/osm.html
9 : {% for field in line %}
10 : <div{% if not line.fields|length_is:'1' %} class="field-box{% if field.field.name %} field-{{ field.field.name }}{% endif %}{% if not field.is_readonly and field.errors %} errors{% endif %}"{% elif field.is_checkbox %} class="checkbox-row"{% endif %}>
11 : {% if not line.fields|length_is:'1' and not field.is_readonly %}{{ field.errors }}{% endif %}
12 : {% if field.is_checkbox %}
13 : {{ field.field }}{{ field.label_tag }}
14 : {% else %}
15 : {{ field.label_tag }}
16 : {% if field.is_readonly %}
17 : <p>{{ field.contents|linebreaksbr }}</p>
18 : {% else %}
19 : {{ field.field }}
20 : {% endif %}
21 : {% endif %}
22 : {% if field.field.help_text %}
23 : <p class="help">{{ field.field.help_text|safe }}</p>
24 : {% endif %}
25 : </div>
26 : {% endfor %}
27 : </div>
28 : {% endfor %}
29 : </fieldset>
Traceback:
File "C:Python27libsite-packagesdjangocorehandlersbase.py" in get_response
139. response = response.render()
File "C:Python27libsite-packagesdjangotemplateresponse.py" in render
105. self.content = self.rendered_content
File "C:Python27libsite-packagesdjangotemplateresponse.py" in rendered_content
82. content = template.render(context)
File "C:Python27libsite-packagesdjangotemplatebase.py" in render
140. return self._render(context)
File "C:Python27libsite-packagesdjangotemplatebase.py" in _render
134. return self.nodelist.render(context)
File "C:Python27libsite-packagesdjangotemplatebase.py" in render
840. bit = self.render_node(node, context)
File "C:Python27libsite-packagesdjangotemplatedebug.py" in render_node
78. return node.render(context)
File "C:Python27libsite-packagesdjangotemplateloader_tags.py" in render
123. return compiled_parent._render(context)
File "C:Python27libsite-packagesdjangotemplatebase.py" in _render
134. return self.nodelist.render(context)
File "C:Python27libsite-packagesdjangotemplatebase.py" in render
840. bit = self.render_node(node, context)
File "C:Python27libsite-packagesdjangotemplatedebug.py" in render_node
78. return node.render(context)
File "C:Python27libsite-packagesdjangotemplateloader_tags.py" in render
123. return compiled_parent._render(context)
File "C:Python27libsite-packagesdjangotemplatebase.py" in _render
134. return self.nodelist.render(context)
File "C:Python27libsite-packagesdjangotemplatebase.py" in render
840. bit = self.render_node(node, context)
File "C:Python27libsite-packagesdjangotemplatedebug.py" in render_node
78. return node.render(context)
File "C:Python27libsite-packagesdjangotemplateloader_tags.py" in render
62. result = block.nodelist.render(context)
File "C:Python27libsite-packagesdjangotemplatebase.py" in render
840. bit = self.render_node(node, context)
File "C:Python27libsite-packagesdjangotemplatedebug.py" in render_node
78. return node.render(context)
File "C:Python27libsite-packagesdjangotemplateloader_tags.py" in render
62. result = block.nodelist.render(context)
File "C:Python27libsite-packagesdjangotemplatebase.py" in render
840. bit = self.render_node(node, context)
File "C:Python27libsite-packagesdjangotemplatedebug.py" in render_node
78. return node.render(context)
File "C:Python27libsite-packagesdjangotemplatedefaulttags.py" in render
196. nodelist.append(node.render(context))
File "C:Python27libsite-packagesdjangotemplateloader_tags.py" in render
155. return self.render_template(self.template, context)
File "C:Python27libsite-packagesdjangotemplateloader_tags.py" in render_template
137. output = template.render(context)
File "C:Python27libsite-packagesdjangotemplatebase.py" in render
140. return self._render(context)
File "C:Python27libsite-packagesdjangotemplatebase.py" in _render
134. return self.nodelist.render(context)
File "C:Python27libsite-packagesdjangotemplatebase.py" in render
840. bit = self.render_node(node, context)
File "C:Python27libsite-packagesdjangotemplatedebug.py" in render_node
78. return node.render(context)
File "C:Python27libsite-packagesdjangotemplatedefaulttags.py" in render
196. nodelist.append(node.render(context))
File "C:Python27libsite-packagesdjangotemplatedefaulttags.py" in render
196. nodelist.append(node.render(context))
File "C:Python27libsite-packagesdjangotemplatedefaulttags.py" in render
305. return nodelist.render(context)
File "C:Python27libsite-packagesdjangotemplatebase.py" in render
840. bit = self.render_node(node, context)
File "C:Python27libsite-packagesdjangotemplatedebug.py" in render_node
78. return node.render(context)
File "C:Python27libsite-packagesdjangotemplatedefaulttags.py" in render
305. return nodelist.render(context)
File "C:Python27libsite-packagesdjangotemplatebase.py" in render
840. bit = self.render_node(node, context)
File "C:Python27libsite-packagesdjangotemplatedebug.py" in render_node
78. return node.render(context)
File "C:Python27libsite-packagesdjangotemplatedebug.py" in render
91. output = force_text(output)
File "C:Python27libsite-packagesdjangoutilsencoding.py" in force_text
100. s = s.__unicode__()
File "C:Python27libsite-packagesdjangoformsforms.py" in __str__
425. return self.as_widget()
File "C:Python27libsite-packagesdjangoformsforms.py" in as_widget
475. return widget.render(name, self.value(), attrs=attrs)
File "C:Python27libsite-packagesdjangocontribgisadminwidgets.py" in render
81. context_instance=geo_context)
File "C:Python27libsite-packagesdjangotemplateloader.py" in render_to_string
162. t = get_template(template_name)
File "C:Python27libsite-packagesdjangotemplateloader.py" in get_template
138. template, origin = find_template(template_name)
File "C:Python27libsite-packagesdjangotemplateloader.py" in find_template
131. raise TemplateDoesNotExist(name)
Exception Type: TemplateDoesNotExist at /admin/APPLICATION/worldborder/245/
Exception Value: gis/admin/osm.html
您可以轻松创建的第一个地图位于"管理"部分
admin.py
from django.contrib.gis import admin
from .models import MyLayer
admin.site.register(MyLayer, admin.GeoModelAdmin)
urls.py
from django.conf.urls import patterns, url, include
from django.contrib.gis import admin
admin.autodiscover()
urlpatterns = patterns('',
url(r'^admin/', include(admin.site.urls)),
)
检查管理应用是否在 settings.py 中启用。
然后转到您的导航器本地主机/myapp/admin。您应该会在项目描述中看到地图。
其他方式:在python中获取你的geom数据,用它制作一个GeoJSON,并将其发送到OpenLayer地图:
需要矢量格式和简单 JSON 包
views.py
#-*- coding: utf-8 -*-
from django.shortcuts import render, redirect
from vectorformats.Formats import Django, GeoJSON
from mysite.models import MyLayer
def geojson(request):
ly = MyLayer.objects.filter(name='xxx')
djf = Django.Django(geodjango='mpoly', properties=['name'])
geoj = GeoJSON.GeoJSON()
my_geojson = geoj.encode(djf.decode(ly))
return render(request, "mysite_temp/map.html", {'my_geojson': my_geojson})
在模板中,创建mysite_temp文件夹和地图.html文件。如果你只在map中写{ {my_geojson} }
.html你会看到GeoJSON的内容
在地图中创建开放图层地图.html:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<script src="http://openlayers.org/api/OpenLayers.js"></script>
<style>
html,body {
height: 99%;
width: 99%;
}
#map {
width: 100%;
height: 100%;
border: 1px solid black;
}
</style>
<script type="text/javascript">
var map;
function init(){
map = new OpenLayers.Map('map');
var base_layer = new OpenLayers.Layer.WMS( "OpenLayers WMS",
"http://vmap0.tiles.osgeo.org/wms/vmap0?", {layers: 'basic'} );
map.addLayer(base_layer);
var layer = new OpenLayers.Layer.Vector("layername");
map.addLayer(layer);
var format = new OpenLayers.Format.GeoJSON();
var feat = format.read({{my_geojson|safe}});
layer.addFeatures(feat);
map.setCenter(new OpenLayers.LonLat(l_val,L_val),zoom_val);
map.addControl(new OpenLayers.Control.LayerSwitcher());
}
</script>
</head>
<body onload = "init()">
<div id="map"></div>
</body>
</html>
干杯!
如何使用@jcs示例在每个多多边形上添加样式图
例
// Style fuer Polygon
var polygon_style = {
fillColor : '${color}',
strokeColor : '${color}',
strokeOpacity : "0.9",
fillOpacity : "0.2"
};
geojson_layer = new OpenLayers.Layer.Vector("GeoJSON", {
projection : projLonLat,
strategies : [ new OpenLayers.Strategy.Fixed() ],
protocol : new OpenLayers.Protocol.HTTP({
url : url_geoJSON_Polygon,
format : new OpenLayers.Format.GeoJSON()
}),
styleMap :new OpenLayers.StyleMap(polygon_style)
});
map.addLayer(geojson_layer);
有了这个地理数据
{
"type": "Feature",
"properties": {"color": "#2EFE2E"},
"geometry": {
"type": "Point",
"coordinates": [
13.41379165649414,
52.54431222846979
]
}
}