Использование PostGIS с существующей таблицей данных, которая имеет десятичные координаты - PullRequest
6 голосов
/ 09 января 2011

У меня есть файл данных в формате CSV, в котором есть такие данные: field id |плитка данных |описание данных |долгота |широта

У меня уже установлены PostgreSQL и PostGIS, и я хотел бы использовать PostGIS для создания запроса, который вызовет все записи (из таблицы выше), которые находятся на указанном расстоянии от местоположения широты и долготы.

Проблема в том, что я не знаю, с чего начать.Должен ли я просто импортировать мой CSV-файл в базу данных PostgreSQL и начать использовать функции PostgreSQL и PostGIS, как только я преобразовал CSV-файл в таблицу PostgreSQL?

Есть ли какие-либо дополнительные шаги, чтобы таблица работала с функциями PostGIS?

Какими будут правильные шаги для этого?Я действительно ценю вашу помощь!

Ответы [ 3 ]

8 голосов
/ 09 января 2011

Для работы с PostGIS вам необходимо импортировать эти скрипты в вашу рабочую базу данных.

После того, как вы выполните этот шаг, настройте вашу таблицу и добавьте в нее столбец PostGIS

SELECT AddGeometryColumn('yourtable', 'columnname', 4269, 'POINT', 2 );

Последние 3 значения: SRID, тип и размер.Я просто предполагаю, что это то, что вы хотите.Возможно, вам нужно настроить SRID, но это должно быть хорошо.

Вы можете установить в своем импорте / обновлении / что угодно, чтобы добавить геометрию, например

ST_Transform(ST_PointFromText('POINT(-85.45899 32.1337)', 4326));

Этот запрос можно написатьв ваш скрипт UPDATE или INSERT для данных.

7 голосов
/ 22 марта 2011

Мне просто нужно было решить ту же задачу и сделать что-то похожее на решение DrColossos ... Вы, наверное, уже сделали с этим, но я просто хотел добавить это на случай, если кто-то погуглит эту проблему (как я): Нет необходимости писать скрипт для генерации геометрии из полей lat / lon, вы можете использовать простую каскадную строку:

UPDATE mytable
SET the_geom = ST_PointFromText('POINT(' || x ||' '|| y ||')', 4326)
2 голосов
/ 09 января 2011

Это забавный вопрос: -)

Вы знаете, в какой системе координат находятся латоны?

Я задаю этот вопрос, потому что он имеет отношение к тому, как вы храните данные.

Что вам нужно сделать, это создать столбец в дополнение к столбцу в CSV-файле, который содержит геометрический объект PostGIS типа POINT.

Затем я импортировал бы данные CSV в стандартные столбцы таблицы, затем запустил обновление SQL, чтобы создать данные POINT из каждой записи и сохранить их в столбце созданной геометрии.

На этом этапе вы сможете использовать функции PostGIS для доступа и предиката запросов к данным.

Это все виды мета того, что я говорю выше, потому что есть некоторые сложности в отношении используемых данных. Вам нужно будет знать систему пространственных привязок, изначально использовавшуюся с данными.

...