我正在尝试为我的django项目实现一些位置感知/空间查找功能。我已经意识到我需要切换到支持PostGIS的数据库而不仅仅是一个普通的Postgres数据库,我希望这是对的吗? 我一直在阅读无数的教程,比如这篇https://www.chicagodjango.com/blog/geo-django-quickstart/ 这表明我需要创建一个地理空间模板才能真正创建或启用PostGIS数据库。请参阅以下代码:
POSTGIS_SQL_PATH=`pg_config --sharedir`/contrib/postgis-1.5
# Creating the template spatial database.
sudo -u postgres createdb -E UTF8 template_postgis
sudo -u postgres createlang -d template_postgis plpgsql # Adding PLPGSQL language support.
# Allows non-superusers the ability to create from this template
sudo -u postgres psql -d postgres -c "UPDATE pg_database SET datistemplate='true' WHERE datname='template_postgis';"
# Loading the PostGIS SQL routines
sudo -u postgres psql -d template_postgis -f $POSTGIS_SQL_PATH/postgis.sql
sudo -u postgres psql -d template_postgis -f $POSTGIS_SQL_PATH/spatial_ref_sys.sql
# Enabling users to alter spatial tables.
sudo -u postgres psql -d template_postgis -c "GRANT ALL ON geometry_columns TO PUBLIC;"
sudo -u postgres psql -d template_postgis -c "GRANT ALL ON geography_columns TO PUBLIC;"
sudo -u postgres psql -d template_postgis -c "GRANT ALL ON spatial_ref_sys TO PUBLIC;"
但是我阅读其他教程时说我可以简单地创建一个新的Postgresql数据库或者使用我现有的数据库并执行:
psql -d yourdatabase -c "CREATE EXTENSION postgis;"
psql -d yourdatabase -c "CREATE EXTENSION postgis_topology;"
psql -d yourdatabase -c "CREATE EXTENSION postgis_tiger_geocoder;"
是哪一个?我甚至在正确的道路上吗?这个PostGIS的东西听起来令人难以置信。
答案 0 :(得分:1)
如果您有PostgreSQL 9.1(或更高版本)和PostGIS 2.x,请务必首先尝试CREATE EXTENSION postgis;
方法,因为它更容易。如果您需要拓扑和/或TIGER地理编码支持,则只添加其他扩展名(大多数人不会)。
模板有点老式,可以忽略这些说明。在2011年推出扩展之前,模板很有用。(你发布的博客是在同一个月发布的PostgreSQL 9.1,扩展支持已经发布)。您可以看到启用PostGIS数据库的其他技术是运行启用程序脚本,但如果可以,请再次忽略这些技术。