[英]GeoDjango--Python:Can't Display Map
I'm getting troubled (more troubled i guess) in displaying my map (from postgresql database) under Geodjango environment. 我在Geodjango环境下显示我的地图(来自postgresql数据库)时遇到了麻烦(我觉得更麻烦)。 .
。 i had already successfully imported my shapefile into Posgresql database.
我已经成功将我的shapefile导入Posgresql数据库。 Yet, I cannot view my maps whenever I tried to.
然而,每当我尝试时,我都无法查看我的地图。 .
。 i also followed the steps in installing all the libraries needed, django, python and postgresql.
我还按照安装所需库,django,python和postgresql的步骤进行操作。 .
。
I am new to Geodjango that's why I cannot trace errors. 我是Geodjango的新手,这就是我无法追踪错误的原因。 .
。 and actually i dont nknow how.
实际上我不知道怎么做。 .
。 maybe i could get help from you guys.
也许我可以得到你们的帮助。 .
。
I always get these errors. 我总是得到这些错误。 .
。 it talks about templates.
它谈论模板。 .
。 i have also my template folder on my project folder.
我的项目文件夹上还有我的模板文件夹。 .
。 yet its empty and dont know what it is for.
但它是空的,不知道它是什么。 .
。
can you please help me out on this. 你可以帮我解决这个问题。 ?
?
more thanks to you and i really appreciate you guys for helping out. 更多,谢谢你,我非常感谢你们帮忙。 .
。
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:\Python27\lib\site-packages\django\contrib\admin\templates\gis\admin\osm.html (File does not exist)
C:\Python27\lib\site-packages\django\contrib\auth\templates\gis\admin\osm.html (File does not exist)
C:\Python27\lib\site-packages\django\contrib\admin\templates\gis\admin\osm.html (File does not exist)
Template error:
In template C:\Python27\lib\site-packages\django\contrib\admin\templates\admin\includes\fieldset.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:\Python27\lib\site-packages\django\core\handlers\base.py" in get_response
139. response = response.render()
File "C:\Python27\lib\site-packages\django\template\response.py" in render
105. self.content = self.rendered_content
File "C:\Python27\lib\site-packages\django\template\response.py" in rendered_content
82. content = template.render(context)
File "C:\Python27\lib\site-packages\django\template\base.py" in render
140. return self._render(context)
File "C:\Python27\lib\site-packages\django\template\base.py" in _render
134. return self.nodelist.render(context)
File "C:\Python27\lib\site-packages\django\template\base.py" in render
840. bit = self.render_node(node, context)
File "C:\Python27\lib\site-packages\django\template\debug.py" in render_node
78. return node.render(context)
File "C:\Python27\lib\site-packages\django\template\loader_tags.py" in render
123. return compiled_parent._render(context)
File "C:\Python27\lib\site-packages\django\template\base.py" in _render
134. return self.nodelist.render(context)
File "C:\Python27\lib\site-packages\django\template\base.py" in render
840. bit = self.render_node(node, context)
File "C:\Python27\lib\site-packages\django\template\debug.py" in render_node
78. return node.render(context)
File "C:\Python27\lib\site-packages\django\template\loader_tags.py" in render
123. return compiled_parent._render(context)
File "C:\Python27\lib\site-packages\django\template\base.py" in _render
134. return self.nodelist.render(context)
File "C:\Python27\lib\site-packages\django\template\base.py" in render
840. bit = self.render_node(node, context)
File "C:\Python27\lib\site-packages\django\template\debug.py" in render_node
78. return node.render(context)
File "C:\Python27\lib\site-packages\django\template\loader_tags.py" in render
62. result = block.nodelist.render(context)
File "C:\Python27\lib\site-packages\django\template\base.py" in render
840. bit = self.render_node(node, context)
File "C:\Python27\lib\site-packages\django\template\debug.py" in render_node
78. return node.render(context)
File "C:\Python27\lib\site-packages\django\template\loader_tags.py" in render
62. result = block.nodelist.render(context)
File "C:\Python27\lib\site-packages\django\template\base.py" in render
840. bit = self.render_node(node, context)
File "C:\Python27\lib\site-packages\django\template\debug.py" in render_node
78. return node.render(context)
File "C:\Python27\lib\site-packages\django\template\defaulttags.py" in render
196. nodelist.append(node.render(context))
File "C:\Python27\lib\site-packages\django\template\loader_tags.py" in render
155. return self.render_template(self.template, context)
File "C:\Python27\lib\site-packages\django\template\loader_tags.py" in render_template
137. output = template.render(context)
File "C:\Python27\lib\site-packages\django\template\base.py" in render
140. return self._render(context)
File "C:\Python27\lib\site-packages\django\template\base.py" in _render
134. return self.nodelist.render(context)
File "C:\Python27\lib\site-packages\django\template\base.py" in render
840. bit = self.render_node(node, context)
File "C:\Python27\lib\site-packages\django\template\debug.py" in render_node
78. return node.render(context)
File "C:\Python27\lib\site-packages\django\template\defaulttags.py" in render
196. nodelist.append(node.render(context))
File "C:\Python27\lib\site-packages\django\template\defaulttags.py" in render
196. nodelist.append(node.render(context))
File "C:\Python27\lib\site-packages\django\template\defaulttags.py" in render
305. return nodelist.render(context)
File "C:\Python27\lib\site-packages\django\template\base.py" in render
840. bit = self.render_node(node, context)
File "C:\Python27\lib\site-packages\django\template\debug.py" in render_node
78. return node.render(context)
File "C:\Python27\lib\site-packages\django\template\defaulttags.py" in render
305. return nodelist.render(context)
File "C:\Python27\lib\site-packages\django\template\base.py" in render
840. bit = self.render_node(node, context)
File "C:\Python27\lib\site-packages\django\template\debug.py" in render_node
78. return node.render(context)
File "C:\Python27\lib\site-packages\django\template\debug.py" in render
91. output = force_text(output)
File "C:\Python27\lib\site-packages\django\utils\encoding.py" in force_text
100. s = s.__unicode__()
File "C:\Python27\lib\site-packages\django\forms\forms.py" in __str__
425. return self.as_widget()
File "C:\Python27\lib\site-packages\django\forms\forms.py" in as_widget
475. return widget.render(name, self.value(), attrs=attrs)
File "C:\Python27\lib\site-packages\django\contrib\gis\admin\widgets.py" in render
81. context_instance=geo_context)
File "C:\Python27\lib\site-packages\django\template\loader.py" in render_to_string
162. t = get_template(template_name)
File "C:\Python27\lib\site-packages\django\template\loader.py" in get_template
138. template, origin = find_template(template_name)
File "C:\Python27\lib\site-packages\django\template\loader.py" in find_template
131. raise TemplateDoesNotExist(name)
Exception Type: TemplateDoesNotExist at /admin/APPLICATION/worldborder/245/
Exception Value: gis/admin/osm.html
The first map you can create very easily is in your Admin section 您可以轻松创建的第一张地图位于“ 管理”部分
admin.py admin.py
from django.contrib.gis import admin
from .models import MyLayer
admin.site.register(MyLayer, admin.GeoModelAdmin)
urls.py 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)),
)
Check that admin app is enable in settings.py. 检查settings.py中是否启用了管理员应用。
Then go to your navigator localhost/myapp/admin. 然后转到导航器localhost / myapp / admin。 You should see a map in your item's description.
您应该在商品描述中看到地图。
Other way : Get your geom data in python, make a GeoJSON out of it and send it to an OpenLayer map: 其他方法 :在python中获取geom数据,从中生成GeoJSON并将其发送到OpenLayer映射:
requires vectorformats and simplejson packages 需要vectorformats和simplejson包
views.py 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})
In templates, create mysite_temp folder and map.html file. 在模板中,创建mysite_temp文件夹和map.html文件。 If you write only
{ {my_geojson} }
in map.html you will see the content of the GeoJSON 如果您只在map.html中编写
{ {my_geojson} }
,您将看到GeoJSON的内容
create OpenLayer map in map.html: 在map.html中创建OpenLayer地图:
<!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>
Cheers! 干杯!
How to add StyleMap on each multipolygon with @jcs example 如何使用@jcs示例在每个多面体上添加StyleMap
example 例
// 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);
With this geoJSON 有了这个geoJSON
{
"type": "Feature",
"properties": {"color": "#2EFE2E"},
"geometry": {
"type": "Point",
"coordinates": [
13.41379165649414,
52.54431222846979
]
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.