【问题标题】:Using PostGIS for the first time, what is the geospatial template?第一次使用 PostGIS,地理空间模板是什么?
【发布时间】:2015-02-10 07:10:08
【问题描述】:

我正在尝试为我的 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 的东西听起来令人难以置信的混乱。

【问题讨论】:

  • 我建议遵循this 指南。创建扩展是您在 Postgres 中注册额外包的方式。所以,创建扩展 Postgis 基本上加载了一堆函数和类型,可以让你做空间。如果您首先针对要使用的数据库执行此步骤,然后进行 geodjango 设置,则应该没问题。几周前我自己做了这个,虽然我是一个非常有经验的 Postgres/Postgis 用户,但我以前从未使用过 Django,而且它第一次工作。祝你好运。
  • 您的链接是针对 1.5 的,目前有一个 2.x 版本有一些重大变化。
  • @JakubKania,我只能找到 1.8 和 dev。也许你可以放一个链接,回答这个问题?关于创建扩展 postgis 的问题仍然存在,不是吗?
  • @JohnBarça,哦,对不起,我的意思是 OP。他的教程适用于 1.5,因此与其他教程存在差异。我不知道 geodjango,抱歉。
  • @JakubKania。不用担心,我只使用了一点 GeoDjango,但效果非常好,按照设置指南操作也没问题。

标签: postgresql postgis


【解决方案1】:

如果您有 PostgreSQL 9.1(或更高版本)和 PostGIS 2.x,请务必先尝试 CREATE EXTENSION postgis; 方法,因为它更容易。如果您需要拓扑和/或 TIGER 地理编码支持(大多数人不需要),请仅添加其他扩展。

模板有些过时,可以忽略这些说明。在 2011 年引入扩展之前,模板很有用。(您发布的博客是在同一个月发布的带有扩展支持的 PostgreSQL 9.1 发布的)。您可能会看到启用 PostGIS 数据库的其他技术正在运行启用脚本,但如果可以,请再次忽略这些。

【讨论】:

    猜你喜欢
    • 2020-02-10
    • 1970-01-01
    • 2012-06-26
    • 1970-01-01
    • 1970-01-01
    • 2020-09-10
    • 2011-04-27
    • 1970-01-01
    • 2019-02-18
    相关资源
    最近更新 更多