[PYTHON] GeoDjango + SQLite-Umgebungskonstruktion unter OS X.

Django, ein von Python erstelltes Webframework, enthält ein Framework namens GeoDjango, mit dem Apps erstellt werden, die Standortinformationen auf Django verwenden.

Ich konnte nicht viele Informationen über die Verwendung von GeoDjango finden, also war ich süchtig danach, also werde ich es zusammenfassen.

Wählen Sie die zu verwendende Datenbank aus

Um GeoDjango verwenden zu können, müssen Sie eine Erweiterung installieren, die geografische Objekte in einer normalerweise verfügbaren Datenbank wie PostgreSQL / SQLite / MySQL verarbeiten kann.

Die Umgebungskonstruktion mit PostgreSQL + PostGIS wird offiziell empfohlen, diesmal jedoch SQLite + Spatia Lite Bauen Sie so, wie Sie es benutzt haben.

Einführung von SQLite und Spatia Lite

Führen Sie SQLite und Spatia Lite ein.

In der offiziellen Dokumentation wird beschrieben, wie Sie das Paket mitbringen und installieren. Es ist jedoch einfacher, es mit Homebrew einzulegen.

Installing Spatialite | Django documentation | Django

$ brew install sqlite
$ brew install libspatialite
$ brew install spatialite-tools
$ brew install librasterlite

Einführung von Pysqlite

Wenn Sie versuchen, es mit pip normal einzusetzen, werden Sie später süchtig.

$ pip install pysqlite #Süchtig machend

Diesmal ist es notwendig, aus der Quelle einzuführen

$ curl -O https://pypi.python.org/packages/source/p/pysqlite/pysqlite-2.6.3.tar.gz
$ tar xzf pysqlite-2.6.3.tar.gz
$ cd pysqlite-2.6.3
$ $EDITOR setup.cfg

Schreiben Sie setup.cfg wie folgt um.

[build_ext]
#define=
include_dirs=/usr/local/Cellar/sqlite/3.8.3/include
library_dirs=/usr/local/Cellar/sqlite/3.8.3/lib
libraries=sqlite3
#define=SQLITE_OMIT_LOAD_EXTENSION
$ python setup.py install
$ pip install -e .

Änderungen an settings.py

Ich werde den ENGINE von settings.py ändern, der im Projekt verwendet wird

DATABASES = {
    'default': {
        'ENGINE': 'django.contrib.gis.db.backends.spatialite',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

Ändern Sie das Backend in das von gis bereitgestellte.

Fügen Sie auch "contrib.gis" zu "INSTALLED_APPS" hinzu

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.gis',
)

Modelldefinition

Ich werde ein Modell mit einem geeigneten geografischen Feld erstellen. Alles ist gut

from django.contrib.gis.db import models
from django.utils.translation import ugettext as _

class City(models.Model):
    name = models.CharField(_('Name'), max_length=32)
    location = models.PointField(_('Location'))

Vergessen Sie nicht, es wie gewohnt zu INSTALLED_APPS hinzuzufügen. Es ist auch eine gute Idee, Admin zur Bestätigung zu erstellen.

import django.contrib import admin
admin.site.register(City)

DB-Erstellung

Bevor Sie normalerweise "synchronisieren" können, müssen Sie eine DB-Vorlage mit SpatiaLite erstellen.

$ spatialite db.sqlite3 "SELECT InitSpatialMetaData();"
the SPATIAL_REF_SYS table already contains some row(s)
InitSpatiaMetaData ()error:"table spatial_ref_sys already exists"
$ python manage.py syncdb

Vollständig, wenn die Datenbank wie gewohnt erstellt wird

Auch wenn der folgende Fehler zum Zeitpunkt von "syncdb" auftritt

ImproperlyConfigured: The pysqlite library does not support C extension loading. Both SQLite and pysqlite must be configured to allow the loading of extensions to use SpatiaLite.

Die Installation von pysqlite ist möglicherweise nicht erfolgreich. Ich habe es gelöst, indem ich wie oben beschrieben aus der Quelle gebaut habe.

Stellen Sie sicher, dass das Modell auf der Admin-Seite angezeigt wird

Wenn alles gut geht, können Sie die Karte auf der Admin-Seite bearbeiten.

Screen Shot 2014-02-13 at 13.54.42 .jpg

Es ist etwas schwieriger zu bedienen als Google Map.

Zusammenfassung

GeoDjango und Längen- / Breitengrade können nicht nur gespeichert werden, sondern es ist auch mit einem O / R-Mapper ausgestattet, mit dem Sie Polygone auf der Karte haben und Suchbedingungen wie das Einbeziehen bestimmter Punkte verwenden können.

Da es sich jedoch um einen Django handelt, der in Japan beispiellos ist und dessen Verwendung begrenzt ist, habe ich ihn noch nie gesehen. Ich hoffe es wird populärer.

Recommended Posts

GeoDjango + SQLite-Umgebungskonstruktion unter OS X.
Mac OS X Mavericks 10.9.5 Aufbau einer Entwicklungsumgebung
Mac OS X Yosemite 10.10 Aufbau einer Entwicklungsumgebung
Konstruktionsnotiz für die Mac OS X-Entwicklungsumgebung
Mac OS X Mountain Lion 10.8.5 Aufbau einer Entwicklungsumgebung
Anaconda-Umgebungskonstruktion auf CentOS7
Erstellen einer Umgebung für "Tello_Video" unter Mac OS X.
Erstellen Sie eine Python-Entwicklungsumgebung unter Mac OS X.
Hinweise zur Vorbereitung der Python-Entwicklungsumgebung unter Mac OS X.
[Tensorflow] Aufbau der Tensorflow-Umgebung unter Windows 10
Erstellen einer R-Umgebung mit Jupyter (ehemals IPython-Notebook) (unter OS X El Capitan 10.11.3)
Aufbau einer Linux-Umgebung (in einer WSL-Umgebung)
Erstellen Sie eine Python-Entwicklungsumgebung mit OS X Lion
Python-Umgebungskonstruktionsnotiz unter Windows 10
Aufbau einer Anaconda-Python-Umgebung unter Windows 10
Beginn des selbst erstellten Betriebssystems 1. Aufbau der Umgebung
Aufbau einer Anaconda-Umgebung auf einem Mac (Version 2018)
Installieren Sie Sphinx unter MacOSX
Konstruktionsnotiz für die Python-Umgebung auf dem Mac
Aufbau einer Python-Entwicklungsumgebung unter macOS
Installieren Sie mitmproxy unter Mac OS X.
[Linux] Aufbau einer Docker-Umgebung auf Redhat
Erstellen einer Umgebung für Python3.8 auf einem Mac
Erstellen einer Umgebung für "Tello_Video" unter Ubuntu
OpenCV3 & Python3 Umgebungskonstruktion unter Ubuntu
Installieren Sie pgmagick unter Mac OS X 10.9
Fortsetzung ・ Hinweise zur Vorbereitung der Python-Entwicklungsumgebung unter Mac OS X.
Umgebungskonstruktionsverfahren für das Fitnessstudio "Open AI Gym", das KI in Spielen unter Mac OS X trainiert
Installieren Sie matplotlib unter OS X El Capitan
Erstellen einer LaTeX-Umgebung unter Chrome OS
Installiert aws-cli Unter Mac OS X Lion
Führen Sie NASA CEA unter Mac OS X aus
Erstellen Sie eine Umgebung mit pyenv, pyenv-virtualenv, jupyter unter OS X El Capitan
Django Umweltbau
[Hinweis] Erstellen Sie eine Python-Umgebung auf dem Mietserver "CORESERVER".
DeepIE3D-Umgebungskonstruktion
Emacs-basierte Umgebungskonstruktion
Aufbau einer Linux-Umgebung
Ich habe Pygame mit Python 3.5.1 in der Umgebung von pyenv unter OS X installiert
Umgebungskonstruktion (Python)
Django Umweltbau
[0] TensorFlow-GPU-Umgebungskonstruktion, die mit Anaconda unter Ubuntu erstellt wurde
Führen Sie Zookeeper x Python (Kazoo) unter Mac OS X aus
CodeIgniter-Umgebungskonstruktion
Python-Umgebungskonstruktion
Installation von TensorFlow 0.11.0rc2 unter OS X El Capitan (10.11.6)
Aufbau einer Python-Umgebung
[Umgebungskonstruktion] Oracle DB x Pro * C [Jetzt]
Python 3.x-Umgebungskonstruktion von Pyenv (CentOS, Ubuntu)
Golang Umweltbau
Shpinx (Python Document Builder) unter Mac OS X.
Installieren Sie LightGBM in einer virtuellen OSX-Umgebung
Umgebungskonstruktion von word2vec
Vorbereiten der Verwendung von aws cli unter Mac OS X.
[Umgebungskonstruktion] @anaconda, die Keras / Tensorflow auf der GPU ausführt
Erstellen Sie eine Python-Umgebung für maschinelles Lernen unter Mac OS
Sehr einfach, SciPy unter Mac OS X zu installieren
So installieren Sie caffe unter OS X mit Macports
Versuchen Sie es mit E-Cell 4 unter Windows 7 oder Mac OS X.