Включение геокодера Tiger в postgis версии 2.1

Я использовал homebrew для обновления до последней версии postgis. (2.1)

brew unlink postgis
brew install postgis

Затем я создал миграцию для изменения расширения postgis до 2.1

rails g migration alter_postgis_version

def change
  execute %q{ALTER EXTENSION postgis UPDATE TO "2.1.0";}
end

Редактировать:

Запустил команды brew в первом комментарии, и теперь я получаю следующую ошибку при переносе:

PG::UndefinedObject: ERROR:  type "geometry" does not exist:
CREATE EXTENSION postgis_tiger_geocoder;/me/.rvm/gems/ruby-2.0.0- 
p247@freight_alert/gems/activerecord4.0.0/
lib/active_record/connection_adapters/postgresql/database_statements.rb:128:in `exec'

У меня есть postgis, настроенный по схеме postgis, так что, если я запускаю

$: set search_path = "$user", postgis,public;
$: \d
                             List of relations
 Schema  |           Name           |   Type   |       Owner       
---------+--------------------------+----------+-------------------
 postgis | geography_columns        | view     | me
 postgis | geometry_columns         | view     | me
 etc..

$: \d geometry_columns

                View "postgis.geometry_columns"
      Column       |          Type          | Modifiers 
-------------------+------------------------+-----------
 f_table_catalog   | character varying(256) | 
 f_table_schema    | character varying(256) | 
 f_table_name      | character varying(256) | 
 f_geometry_column | character varying(256) | 
 coord_dimension   | integer                | 
 srid              | integer                | 
 type              | character varying(30)  | 

Однако, если я попытаюсь запустить:

$: CREATE EXTENSION postgis_tiger_geocoder;
ERROR:  type "geometry" does not exist

Это не имеет никакого смысла для меня, так как geometry_columns находится в списке отношений.

2 ответа

Решение

Наткнулся на это. Ушел после того, как я переустановил geos, gdal и libspatialite (переосмысливая каждый из них). Я не могу сказать, что это рецепт копирования / вставки, но поиграйте с ним и посмотрите, сможете ли вы заставить его работать:

brew reinstall gdal
brew unlink gdal && brew link gdal
brew reinstall geos
brew unlink geos && brew link geos
brew reinstall libspatialite
brew unlink libspatialite && brew link libspatialite

Возможно, вам придется сделать это в другом порядке или повторить один за другим, чтобы упорядочить библиотеки. Не удаляйте также и postgis-2.0.x, так как для софт-апгрейда вам понадобятся (обе) библиотеки.

Убедитесь, что схема postgis находится в вашей базе данных search_path. После этого переподключитесь к своей базе данных и попробуйте снова. Должно выглядеть примерно так.

ALTER DATABASE mydb SET search_path = public, postgis;

Есть небольшая ошибка, которую мы ввели в postgis_tiger_geocoder, поэтому может потребоваться использовать версию 2.1.1 или вручную исправить загрузчик, описанный здесь:

http://www.postgresonline.com/journal/archives/317-CREATE-SCHEMA-IF-NOT-EXISTS-in-9.3-and-tiger-geocoder.html

Другие вопросы по тегам