【问题标题】:Problem creating PostGIS template database创建 PostGIS 模板数据库的问题
【发布时间】:2011-06-03 13:30:58
【问题描述】:

我正在尝试为我的 GeoDjango 应用程序在 Mac OS X Snow Leopard (10.6) 上为 PostGIS (1.5) 构建模板地理数据库。

我正在关注: http://docs.djangoproject.com/en/dev/ref/contrib/gis/install/#creating-a-spatial-database-template-for-postgis

我已经达到了应该运行提供的 postgis.sql 的地步(即psql -d template_postgis -f $POSTGIS_SQL_PATH/postgis.sql

此时我在尝试运行的第一条 SQL 语句中遇到错误。当我在 psql 提示符上尝试时,结果如下:

template_postgis=# CREATE OR REPLACE FUNCTION st_spheroid_in(cstring) RETURNS spheroid AS '/usr/local/pgsql/lib/postgis-1.5','ellipsoid_in' LANGUAGE 'C' IMMUTABLE STRICT;
NOTICE:  type "spheroid" is not yet defined
DETAIL:  Creating a shell type definition.
ERROR:  could not load library "/usr/local/pgsql/lib/postgis-1.5.so": dlopen(/usr/local/pgsql/lib/postgis-1.5.so, 10): Symbol not found: _DatumGetFloat4
  Referenced from: /usr/local/pgsql/lib/postgis-1.5.so
  Expected in: /opt/local/lib/postgresql83/bin/postgres 
 in /usr/local/pgsql/lib/postgis1.5.so

有什么想法可能搞砸了吗?

【问题讨论】:

  • 奇怪的错误。你是如何安装 PostGIS 的?在 OS X 上使用 KyngChaos 框架取得了最好的运气。
  • 首先我尝试了 mac 端口,但它并不顺利,因为它试图重新安装已经存在的依赖项等,所以我采用了 KyngChaos 的方式。
  • 我在/usr/local/pgsql/bin//opt/local/lib/postgresql83/bin/ 下都有psql 和pg_config 以及其他二进制文件。这是否提供了有关混乱的线索?
  • 我手动删除了/opt/local/lib/postgresql83/ 并使用 KyngChaos 二进制文件安装了 postgresql 9.0.1 和 postgis 1.5.2,但没有运气。我仍然遇到同样的错误。

标签: macos postgis geodjango


【解决方案1】:

检查您是否安装了正确的必备库。我在安装 GEOS v2 时遇到了同样的错误,升级到 v3 解决了这个问题。

【讨论】:

    【解决方案2】:

    以下是我为 PostGIS 设置模板数据库的方法 Landsliding Into PostGIS With KML Files

    【讨论】:

    • 谢谢。仍然没有运气。在应该运行 sql 语句的地方(在我的设置中的 /usr/local/pgsql-9.0/share/contrib/postgis-1.5 下)我得到一个 ERROR: could not access file "$libdir/postgis-1.5": No such file or directory 错误,因为 sql 脚本中的 $libdir 无法解析。我用 sql 文件中的实际路径替换了该变量(即/usr/local/pgsql-9.0/lib/postgis-1.5)。然后我收到问题中提到的错误。我不知道为什么以及从哪里引用这个/opt/local/lib/postgresql83/bin/postgres
    • 是否可以卸载两个版本并重新开始?我建议使用 Homebrew
    • 我无法卸载。如果可以的话,这将解决问题。但是虽然我重新安装了 postgis,但它仍然适用于甚至不再存在的 postgresql83 目录。
    【解决方案3】:

    此错误表示找不到共享对象。最明显的原因是没有(正确)安装 PostGIS。此外,contrib/postgis-1.5 文件夹中的 SQL 脚本的安装顺序也很重要。

    我已成功使用此命令和(Linux shell 命令):

    $ psql -U postgres -d database -f /usr/share/postgresql/9.0/contrib/_int.sql
    $ psql -U postgres -d database  -f /usr/share/postgresql/9.0/contrib/pg_trgm.sql
    $ psql -U postgres -d database  -f /usr/share/postgresql/9.0/contrib/postgis-1.5/postgis.sql
    $ psql -U postgres -d database  -f /usr/share/postgresql/9.0/contrib/postgis-1.5/spatial_ref_sys.sql
    

    在此之后,应该有大约 800 个函数、一些新类型和一些重载运算符可用。

    【讨论】:

    • 谢谢。显然安装有问题。我不知道是什么,我不能全部回滚并从头开始。如果我可以卸载所有这些,那也可以。我之前在我以前的开发环境 mac ox x 10.5 上做过这个。
    • @omat 您可以从数据库中删除 gis 函数。如果它们可用,则问题应该出在其他地方,但是由于您的错误消息指出未定义“球体”,因此您缺少一些导入。
    猜你喜欢
    • 2012-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-01
    • 2011-10-17
    • 2013-12-17
    相关资源
    最近更新 更多