Если я запустил эту команду:
raster2pgsql.exe -I -C -s 4326 -t 256x256 -l 4,16 C:\raster\sthlm .tif public.stockholm | psql -U postgresuser -d rasterdata -h localhost -p 5432
в интерфейсе командной строки Windows команда выполняется нормально. Растровый файл импортируется в базу данных PostgreSQL "rasterdata".
Но я не могу заставить его работать с Java ProcessBuilder. В приведенной выше команде есть два exe-файла (raster2pgsql.exe и psql.exe), и я не знаю, как определить команду для ProcessBuilder с двумя exe-файлами.
синтаксис для двух программ:
RASTER2PGSQL:
-s использует srid 4326
-Я создаю пространственный индекс
-C использую стандартные растровые ограничения
-t разбиваю выходные данные на плитки 256x256
Входной файл sthlm.tif
-t расположить выходные данные плиткой 256x256*
public.stockholm загрузить в эту таблицуraster2pgsql -s 4326 -I -C -t 256x256 sthlm.tif public.stockholm > elev.sql
PSQL:
-d подключиться к этой базе данных
-u пользователь базы данных
-h хост
-p порт
-f прочитать этот файл после подключения (вывод SQL из raster2pgsql)
psql -u postgres -d rasterdata -h localhost -p 5432 -f elev.sql
Я не хочу запускать программы отдельно (сначала сохраняя преобразует растровые данные на диске (elev.sql), а затем вставляет данные из elev.sql в базу данных. Следовательно, я хотел бы передать psql в raster2pgsql, как Postgis, как показывает PostGIS (https://postgis.net/docs/using_raster_d ... ter_Loader):
"Можно выполнить преобразование и загрузку. все за один шаг с использованием каналов UNIX:
raster2pgsql -s 4326 -I -C -M .tif -F -t 100x100 public.demelevation | psql -d gisdb"< /em>
Это пример вывода, когда я запускаю свой код с помощью raster2pgsql | psql:
ВСТАВИТЬ В "public"."stockholm | psql -u postgresuser -d rasterdata -h localhost 5432" ("rast") ЗНАЧЕНИЯ ('01000...
и т.д..
похоже, что выполняется только raster2pgsql
мой код:
ArrayList cmd = new ArrayList();
cmd.add("raster2pgsql.exe");
cmd.add("-I");
cmd.add("-C");
cmd.add("-s");
cmd.add("4326");
cmd.add("-t");
cmd.add("256x256");
cmd.add("-l");
cmd.add("4,16");
cmd.add(c:\raster\sthlm.tif");
cmd.add("public.stockholm | psql -U postgresuser -d rasterdata -h localhost -p 5432);
ProcessBuilder b = MainDialog.gdalProcess; //pre created
b.command(cmd);
Process p=null;
try {
p = b.start();
} catch (IOException e) {
e.printStackTrace();
}
try (InputStream processOutput = p.getInputStream()) {
BufferedReader bufIn = new BufferedReader(new InputStreamReader(processOutput));
String str1 = null;
while ((str1 = bufIn.readLine()) != null) {
System.out.println(str1 + "\n");
}
bufIn.close();
} catch (IOException e) {
e.printStackTrace();
}
Подробнее здесь: https://stackoverflow.com/questions/790 ... d-exe-file
Как запустить Java ProcessBuilder с помощью «Pipe» для второго exe-файла? ⇐ JAVA
Программисты JAVA общаются здесь
1728968811
Anonymous
Если я запустил эту команду:
[b]raster2pgsql.exe -I -C -s 4326 -t 256x256 -l 4,16 C:\raster\sthlm .tif public.stockholm | psql -U postgresuser -d rasterdata -h localhost -p 5432[/b]
в интерфейсе командной строки Windows команда выполняется нормально. Растровый файл импортируется в базу данных PostgreSQL "rasterdata".
Но я не могу заставить его работать с Java ProcessBuilder. В приведенной выше команде есть два exe-файла (raster2pgsql.exe и psql.exe), и я не знаю, как определить команду для ProcessBuilder с двумя exe-файлами.
синтаксис для двух программ:
[b]RASTER2PGSQL:[/b]
-s использует srid 4326
-Я создаю пространственный индекс
-C использую стандартные растровые ограничения
-t разбиваю выходные данные на плитки 256x256
Входной файл sthlm.tif
-t расположить выходные данные плиткой 256x256*
public.stockholm загрузить в эту таблицуraster2pgsql -s 4326 -I -C -t 256x256 sthlm.tif public.stockholm > elev.sql
[b]PSQL: [/b]
-d подключиться к этой базе данных
-u пользователь базы данных
-h хост
-p порт
-f прочитать этот файл после подключения (вывод SQL из raster2pgsql)
psql -u postgres -d rasterdata -h localhost -p 5432 -f elev.sql
Я не хочу запускать программы отдельно (сначала сохраняя преобразует растровые данные на диске (elev.sql), а затем вставляет данные из elev.sql в базу данных. Следовательно, я хотел бы передать psql в raster2pgsql, как Postgis, как показывает PostGIS (https://postgis.net/docs/using_raster_dataman.html#RT_Raster_Loader):
[b]"Можно выполнить преобразование и загрузку. все за один шаг с использованием каналов UNIX:
raster2pgsql -s 4326 -I -C -M .tif -F -t 100x100 public.demelevation | psql -d gisdb"[/b]< /em>
Это пример вывода, когда я запускаю свой код с помощью raster2pgsql | psql:
ВСТАВИТЬ В "public"."stockholm | psql -u postgresuser -d rasterdata -h localhost 5432" ("rast") ЗНАЧЕНИЯ ('01000...
и т.д..
похоже, что выполняется только raster2pgsql
мой код:
ArrayList cmd = new ArrayList();
cmd.add("raster2pgsql.exe");
cmd.add("-I");
cmd.add("-C");
cmd.add("-s");
cmd.add("4326");
cmd.add("-t");
cmd.add("256x256");
cmd.add("-l");
cmd.add("4,16");
cmd.add(c:\raster\sthlm.tif");
cmd.add("public.stockholm | psql -U postgresuser -d rasterdata -h localhost -p 5432);
ProcessBuilder b = MainDialog.gdalProcess; //pre created
b.command(cmd);
Process p=null;
try {
p = b.start();
} catch (IOException e) {
e.printStackTrace();
}
try (InputStream processOutput = p.getInputStream()) {
BufferedReader bufIn = new BufferedReader(new InputStreamReader(processOutput));
String str1 = null;
while ((str1 = bufIn.readLine()) != null) {
System.out.println(str1 + "\n");
}
bufIn.close();
} catch (IOException e) {
e.printStackTrace();
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79085495/how-do-i-run-java-processbuilder-with-a-pipe-to-a-second-exe-file[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия