Heim > Artikel > Backend-Entwicklung > Erstellen Sie Web-GIS-Anwendungen basierend auf Django
Mit der rasanten Entwicklung des globalen Positionierungssystems (GPS) und der Satellitenbildtechnologie ist das geografische Informationssystem (GIS) zu einem wichtigen Anwendungsgebiet geworden. GIS beschränkt sich nicht nur auf die Kartenerstellung und -analyse, sondern wird auch häufig in den Bereichen Umweltmanagement, Landmanagement, Stadtplanung und anderen Bereichen eingesetzt. Die Entwicklung von Web-GIS-Anwendungen ermöglicht es Benutzern, GIS-Daten an jedem Ort, zu jeder Zeit und über jedes Gerät abzufragen, zu analysieren und zu verwalten, was große Anwendungsaussichten bietet.
Django ist ein Webentwicklungs-Framework, das auf der Python-Sprache basiert. Es bietet eine Reihe von Entwicklungstools und -technologien, die uns helfen können, schnell effiziente Webanwendungen zu erstellen. In diesem Artikel wird erläutert, wie Sie mit Django eine einfache Web-GIS-Anwendung erstellen.
1. Umgebungsvorbereitung
Bevor wir beginnen, müssen wir sicherstellen, dass die folgenden erforderlichen Umgebungen installiert wurden:
django-admin startproject webgis
cd webgisAls nächstes können wir mit dem folgenden Befehl eine Anwendung namens gisapp erstellen:
python manage.py startapp gisappDieser Befehl erstellt eine Django-Anwendung mit dem Namen gisapp und fügt sie dem Unterverzeichnis des Projekts A hinzu Unter dem Verzeichnis wird ein Ordner mit demselben Namen erstellt. 3. Konfigurieren Sie das Django-Projekt Wir müssen GDAL und die Anwendung in der Datei „settings.py“ des Projekts konfigurieren:
# settings.py # 导入GDAL库 from django.contrib.gis import gdal # 数据库设置 DATABASES = { 'default': { 'ENGINE': 'django.contrib.gis.db.backends.postgis', # 使用PostGIS数据库 'NAME': 'webgis', # 数据库名称 'USER': 'postgres', # 数据库用户名 'PASSWORD': '****', # 数据库密码 'HOST': '127.0.0.1', # 数据库地址 'PORT': '5432', # 数据库端口 } } # 应用设置 INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'django.contrib.gis', 'gisapp', # 加入我们的应用程序 ] # 时间区域设置 TIME_ZONE = 'Asia/Shanghai' # GDAL设置 gdal.HAS_GDAL = True gdal.HAS_SRS = True4. Erstellen Sie ein geografisches Feature-Modell Wir müssen etwas Geografie in der Datei „models.py“ der Anwendung erstellen Datei-Feature-Modell zum Speichern geografischer Feature-Daten in der Datenbank. Beispielsweise können wir ein Modell namens „WorldBorder“ erstellen, um Grenzinformationen von Ländern auf der Welt zu speichern. Das Folgende ist die Definition des Modells:
# models.py from django.contrib.gis.db import models class WorldBorder(models.Model): name = models.CharField(max_length=50) area = models.IntegerField(default=0) pop2005 = models.IntegerField(default=0) fips = models.CharField(max_length=2) iso2 = models.CharField(max_length=2) iso3 = models.CharField(max_length=3) un = models.IntegerField(default=0) region = models.IntegerField(default=0) subregion = models.IntegerField(default=0) lon = models.FloatField() lat = models.FloatField() mpoly = models.MultiPolygonField() def __str__(self): return self.nameIn diesem Modell definieren wir einige Felder, um die grundlegenden Informationen des Landes/der Region (wie Name, Fläche, Bevölkerung usw.) zu speichern, und wir definieren auch ein Feld von Geben Sie MultiPolygonField ein, um Grenzinformationen zu speichern. 5. Geografische Feature-Daten erstellenWir müssen einige geografische Feature-Daten für die Speicherung in der Datenbank erstellen. Mit dem folgenden Befehl können wir Daten in die Datenbank importieren:
ogr2ogr -f "PostgreSQL" PG:"dbname=webgis user=postgres host=127.0.0.1 password=**** port=5432" -nln worldborder -nlt MULTIPOLYGON -update -overwrite -lco GEOMETRY_NAME=mpoly -skipfailures ./world_borders.shpDieser Befehl importiert die Daten in der Datei world_borders.shp in eine Tabelle mit dem Namen „worldborder“. 6. Ansichtsfunktionen schreiben Wir müssen einige Ansichtsfunktionen in die Datei „views.py“ der Anwendung schreiben, um auf Benutzeranfragen reagieren zu können. Beispielsweise können wir eine Ansichtsfunktion namens „map“ schreiben, um die Grenzinformationen von Ländern auf der ganzen Welt auf der Karte anzuzeigen. Hier ist die Definition dieser Ansichtsfunktion:
# views.py from django.shortcuts import render from django.contrib.gis.geos import GEOSGeometry from .models import WorldBorder def map(request): # 获取所有国家/地区 countries = WorldBorder.objects.all() # 构造GeoJSON格式数据 geojson = { "type": "FeatureCollection", "features": [] } for country in countries: feature = { "type": "Feature", "geometry": country.mpoly.geojson, "properties": { "name": country.name, "area": country.area, "pop2005": country.pop2005, "fips": country.fips, "iso2": country.iso2, "iso3": country.iso3, "un": country.un, "region": country.region, "subregion": country.subregion } } geojson["features"].append(feature) # 返回地图页面 return render(request, 'map.html', {'geojson': geojson})Diese Funktion ruft zunächst die Informationen aller Länder ab und wandelt sie dann in GeoJSON-formatierte Daten um. Abschließend werden die Daten zur Anzeige an eine Vorlage namens „map.html“ übergeben. 7. Vorlagen schreibenWir müssen eine Vorlage mit dem Namen „map.html“ im Vorlagenverzeichnis der Anwendung erstellen, um Karten und Daten anzuzeigen. Hier ist die Definition dieser Vorlage:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Web GIS Application</title> <style> #map { width: 100%; height: 100%; position: absolute; top: 0; left: 0; z-index: -1; } </style> <script src="{% static 'leaflet/leaflet.js' %}"></script> <link rel="stylesheet" href="{% static 'leaflet/leaflet.css' %}"/> </head> <body> <div id="map"></div> <script> // 初始化地图 var map = L.map('map').setView([39.9, 116.4], 3); // 添加图层 var geojson = {{ geojson | safe }}; var countries = L.geoJSON(geojson, { onEachFeature: function (feature, layer) { layer.bindPopup(feature.properties.name); } }).addTo(map); // 添加控件 L.control.scale().addTo(map); // 添加底图 var osm = L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png', { attribution: 'Map data © <a href="http://openstreetmap.org">OpenStreetMap</a> contributors' }); osm.addTo(map); </script> </body> </html>Diese Vorlage verwendet eine JavaScript-Kartenbibliothek namens „Leaflet“. 8. Führen Sie die Anwendung aus Wir können den folgenden Befehl in der Befehlszeile ausführen, um den Django-Server zu starten:
python manage.py runserverBesuchen Sie dann die folgende Adresse, um die Web-GIS-Anwendung im Browser anzuzeigen:
http://127.0.0.1:8000/mapZusammenfassung In diesem Artikel wird beschrieben, wie Sie mit Django und GDAL eine einfache Web-GIS-Anwendung erstellen. Mithilfe dieser Tools und Techniken können wir auf einfache Weise effiziente Webanwendungen entwickeln, in denen geografische Daten angezeigt und analysiert werden. Darüber hinaus können wir andere Kartenbibliotheken und GIS-Datenquellen nutzen, um unsere Anwendung weiter zu erweitern und zu optimieren.
Das obige ist der detaillierte Inhalt vonErstellen Sie Web-GIS-Anwendungen basierend auf Django. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!