[PYTHON] Construction de l'environnement GeoDjango + SQLite sur OS X

Django, un framework web créé par Python, est livré avec un framework appelé GeoDjango qui crée des applications qui utilisent les informations de localisation sur Django.

Je n'ai pas trouvé beaucoup d'informations sur l'utilisation de GeoDjango, donc j'étais accro, donc je vais le résumer.

Sélectionnez la base de données à utiliser

Pour utiliser GeoDjango, vous devez installer une extension qui peut gérer les objets Geographic dans une base de données normalement disponible telle que PostgreSQL / SQLite / MySQL.

La construction de l'environnement avec PostgreSQL + PostGIS est officiellement recommandée, mais cette fois SQLite + Spatia Lite Construisez la façon dont vous l'avez utilisé.

Introduction de SQLite et Spatia Lite

Présentez SQLite et Spatia Lite.

La documentation officielle décrit comment apporter le paquet et l'installer, mais il est plus facile de le mettre avec Homebrew.

Installing Spatialite | Django documentation | Django

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

Introduction de pysqlite

Si vous essayez de le mettre en utilisant pip normalement, vous serez accro plus tard.

$ pip install pysqlite #Addictif

Cette fois, il est nécessaire d'introduire à partir de la source

$ 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

Réécrivez setup.cfg comme suit.

[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 .

Modifications apportées à settings.py

Je vais changer le MOTEUR de settings.py utilisé dans le projet

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

Remplacez le backend par celui fourni par gis.

Ajoutez également contrib.gis à ʻINSTALLED_APPS`

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

Définition du modèle

Je vais créer un modèle avec un champ géographique approprié. tout va bien

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'))

N'oubliez pas de l'ajouter à ʻINSTALLED_APPS` comme vous le feriez normalement. Il est également judicieux de créer un administrateur pour confirmation.

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

Création de DB

Avant de pouvoir normalement syncdb, vous devez créer un modèle de base de données à l'aide de SpatiaLite.

$ 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

Terminé lorsque DB est créé comme d'habitude

De plus, si l'erreur suivante se produit au moment de syncdb

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.

L'installation de pysqlite peut échouer. Je l'ai résolu en construisant à partir de la source comme décrit ci-dessus.

Vérifiez que le modèle est affiché sur la page Admin

Si tout se passe bien, vous pouvez modifier la carte à partir de la page Admin.

Screen Shot 2014-02-13 at 13.54.42 .jpg

C'est un peu plus difficile à utiliser que Google Map.

Résumé

En plus de pouvoir enregistrer GeoDjango et la latitude / longitude, il est également équipé d'un mappeur O / R qui vous permet d'avoir des polygones sur la carte et d'utiliser des conditions de recherche telles que l'inclusion de points spécifiques.

Cependant, comme il s'agit de Django, qui est sans précédent au Japon, et que son utilisation est limitée, je ne l'ai jamais vu utilisé. J'espère que cela deviendra plus populaire.

Recommended Posts

Construction de l'environnement GeoDjango + SQLite sur OS X
Construction de l'environnement de développement Mac OS X Mavericks 10.9.5
Construction de l'environnement de développement Mac OS X Yosemite 10.10
Mémo de construction de l'environnement de développement Mac OS X
Construction de l'environnement de développement Mac OS X Mountain Lion 10.8.5
Construction de l'environnement Anaconda sur CentOS7
Création d'un environnement pour "Tello_Video" sur Mac OS X
Créer un environnement de développement Python sur Mac OS X
Mémo sur Mac OS X
[Tensorflow] Construction de l'environnement Tensorflow sous Windows 10
Création d'un environnement R avec Jupyter (anciennement notebook IPython) (sous OS X El Capitan 10.11.3)
Construction de l'environnement Linux (sur environnement WSL)
Créer un environnement de développement Python avec OS X Lion
Mémo de construction de l'environnement Python sur Windows 10
Construction de l'environnement Anaconda Python sous Windows 10
Début de l'auto-construction OS 1. Construction de l'environnement
Construction de l'environnement Anaconda sur Mac (version 2018)
Installez Sphinx sur MacOSX
Mémo de construction de l'environnement Python sur Mac
Construction de l'environnement de développement Python sur macOS
Installez mitmproxy sur Mac OS X
[Linux] Construction de l'environnement Docker sur Redhat
Construire un environnement pour python3.8 sur Mac
Créer un environnement pour "Tello_Video" sur Ubuntu
Construction d'environnements OpenCV3 et Python3 sur Ubuntu
Installez pgmagick sur Mac OS X 10.9
Suite ・ Notes sur la préparation de l'environnement de développement Python sur Mac OS X
Procédure de construction de l'environnement pour la salle de sport "Open AI Gym" qui entraîne l'IA à des jeux sur Mac OS X
Installez matplotlib sur OS X El Capitan
Création d'un environnement LaTeX sur Chrome OS
Aws-cli installé sur Mac OS X Lion
Exécutez NASA CEA sur Mac OS X
Créez un environnement avec pyenv, pyenv-virtualenv, jupyter sur OS X El Capitan
Construction de l'environnement Django
[Note] Construisez un environnement Python sur le serveur de location "CORESERVER"
Construction de l'environnement DeepIE3D
Construction d'environnement basée sur Emacs
Construction de l'environnement Linux
J'ai installé Pygame avec Python 3.5.1 dans l'environnement de pyenv sur OS X
Construction d'environnement (python)
construction d'environnement django
[0] Construction de l'environnement TensorFlow-GPU avec Anaconda sur Ubuntu
Exécutez Zookeeper x python (kazoo) sur Mac OS X
Construction de l'environnement CodeIgniter
construction d'environnement python
Installation de TensorFlow 0.11.0rc2 sur OS X El Capitan (10.11.6)
Construction de l'environnement Python
[Construction de l'environnement] Oracle DB x Pro * C [maintenant]
Construction de l'environnement Python 3.x par Pyenv (CentOS, Ubuntu)
Construction de l'environnement Golang
Shpinx (Python Document Builder) sur Mac OS X
Installez LightGBM dans l'environnement virtualenv OSX
Construction de l'environnement de word2vec
Préparation à l'utilisation de aws cli sur Mac OS X
[Construction de l'environnement] @anaconda qui exécute keras / tensorflow sur GPU
Créer un environnement Python d'apprentissage automatique sur Mac OS
Très facile à installer SciPy sur Mac OS X
Comment installer Caffe sur OS X avec macports
Essayez d'utiliser E-Cell 4 sur Windows 7 ou Mac OS X