OS X에서 GeoDjango + SQLite 환경 구축
GeoDjango를 사용하고 있는 정보가 거의 보이지 않고, 빠졌기 때문에 정리해 보겠습니다.
사용할 DB 선택
GeoDjango를 사용하기 위해서는 PostgreSQL/SQLite/MySQL 등, 통상 사용할 수 있는 DB에 Geographic 객체를 취급할 수 있도록 하는 확장을 인스톨 하지 않으면 안됩니다.
PostgreSQL + PostGIS에서의 환경 구축이 공식적으로 추천 되고 있습니다만, 이번은 SQLite + SpatiaLite를 사용한 방법으로 구축합니다.
SQLite와 SpatiaLite 도입
SQLite와 SpatiaLite를 소개합니다.
공식 문서에서는 패키지를 가져와 도입하는 방법이 쓰여져 있지만 Homebrew로 넣는 것이 편하다.
Installing Spatialite | 장고 문서화 | 장고
$ brew install sqlite
$ brew install libspatialite
$ brew install spatialite-tools
$ brew install librasterlite
pysqlite 소개
일반적으로 pip를 사용하여 넣으려고하면 나중에 빠진다.
$ pip install pysqlite # ハマる
이번에는 소스에서 소개해야합니다.
$ 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
setup.cfg
를 다음과 같이 다시 씁니다.[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 .
settings.py 변경
프로젝트에서 사용
settings.py
의 ENGINE을 변경하고DATABASES = {
'default': {
'ENGINE': 'django.contrib.gis.db.backends.spatialite',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
backend를 gis에서 제공되는 것으로 바꾼다.
또한
INSTALLED_APPS
에 contrib.gis
추가INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.gis',
)
모델 정의
적당한 Geographic 필드를 가진 Model을 만들어 준다. 뭐든지 좋은
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'))
평소와 같이 잊지 않고
INSTALLED_APPS
에 추가해 준다. 또한 확인을 위해 Admin을 만들어 두는 것이 좋습니다.import django.contrib import admin
admin.site.register(City)
DB 만들기
일반적으로
syncdb
하기 전에 SpatiaLite를 사용하여 DB 템플릿을 만들어야합니다.$ 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
평소대로 DB를 만들 수 있으면 완료
또한,
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.
pysqlite
설치가 잘못되었을 수 있습니다. 위에서 쓴 것처럼 소스에서 빌드하면 해결했습니다.Admin 페이지에 모델이 표시되는지 확인
잘 가면 Admin 페이지 등에서 지도를 편집할 수 있다.
Google Map에 비해 미묘한 사용이 어렵습니다.
요약
GeoDjango, 위도 경도를 보존할 수 있는 것 외에, 맵상에서 폴리곤이 갖고 있거나, 특정의 지점을 포함하고 있는 등의 검색 조건을 사용할 수 있는 O/R 매퍼가 탑재되고 있거나와 낭비에 고기능!
그러나 다만 국내에서는 예를 보지 않는 Django인데, 사용지가 한정되어 있으므로, 사용되고 있는 곳을 본 적이 없습니다. 더 유행하면 좋네요.
Reference
이 문제에 관하여(OS X에서 GeoDjango + SQLite 환경 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/giginet/items/9edb06900d7c2b173e8e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)