Как мне отправить данные геометрии Postgis?WKT или WKB? - PullRequest
0 голосов
/ 12 декабря 2018

Мне нужно сделать интеграцию между двумя базами данных PostGIS, используя Java.Я получу файл JSON, и каждая его строка представляет запись таблицы.Некоторые таблицы имеют столбцы геометрии.

Должен ли я получать эти геометрические данные в виде шестнадцатеричного представления PostGIS WKB или в виде WKT?Представление PostGIS более компактно, и JTS может анализировать его обоими способами, поэтому кажется, что было бы лучше отправлять данные в этом формате, но в большинстве примеров, которые я вижу, интеграция выполняется через WKT, поэтому ядействительно не уверен насчет лучшего подхода.

Должен ли я отправлять данные в формате WKB или WKT?

Ответы [ 2 ]

0 голосов
/ 12 декабря 2018

Один из вариантов - использовать dblink для прямого запроса к другой базе данных PostGIS вместо экспорта, а затем процесса импорта.

Из документов:

dblink выполняет запрос (обычно SELECT, но это может быть любой оператор SQL, который возвращает строки) в удаленной базе данных.

Таким образом, вы можете отправить запрос из одной базы данных, который будет выглядетьчто-то вроде:

SELECT * 
FROM dblink('connection_string_to_other_db', 'sql_query');

Затем вы получите эти строки в базе данных, из которой вы запустили запрос.

Я не знаю, это то, что вы ищете, но это довольно красивопростой способ получения данных из одной базы данных PostgreSQL в другую.

0 голосов
/ 12 декабря 2018

На самом деле нет разницы в том, как вы отправляете это.Это будет в значительной степени зависеть от требований к пропускной способности.Если это веб-приложение, вам, вероятно, понадобится меньшее представление.

Но вы также можете использовать JSON.JTS, вероятно, также может импортировать геометрию из JSON.

Что бы вы ни выбрали, просто следите за некоторыми характеристиками, касающимися трехмерной геометрии.Некоторые парсеры отказываются от компонента z, чтобы соответствовать спецификации (у меня была похожая проблема с Django много лет назад, но на самом деле это была ошибка).

...