GeoDjango--Python:无法显示地图



我在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
    ]
  }
}

最新更新