He estado usando geoherramientas para leer archivos de forma e importarlos a postgis. Desafortunadamente, cuando se importan archivos grandes, esto lleva a un retraso masivo --8000% de shp2pgsql canalizado en pgsql-- que asumo que es causado mayormente por inserciones individuales de datos.
Asumiendo que la cantidad de tiempo que toma escribir las características en el vertedero no es excesivo, esto debería diezmar masivamente la exorbitante cantidad de tiempo requerida para importar el shapefile.
Mi plan es convertir todos los atributos de las características en filas de cadenas y luego usar la funcionalidad de copia en el jdbc para cargar los datos en masa -pero no conozco ninguna función en el jdbc o en cualquier otro lugar que pueda convertir los objetos de java en cadenas compilables de volcado postgres.
Abajo hay una muestra de la salida de shp2pgsql -que es esencialmente lo que quiero replicar usando java.
SET CLIENT_ENCODING TO UTF8;
SET STANDARD_CONFORMING_STRINGS TO ON;
BEGIN;
CREATE TABLE "raw_data"."mud" (gid serial,
"objectid" numeric(10,0),
"tcmud_name" varchar(50),
"shape_area" numeric,
"shape_len" numeric);
ALTER TABLE "raw_data"."mud" ADD PRIMARY KEY (gid);
SELECT AddGeometryColumn('raw_data','mud','geom','2277','MULTIPOLYGON',2);
COPY "raw_data"."mud" ("objectid","tcmud_name","shape_area","shape_len",geom) FROM stdin;
14 LAKEWAY MUD 9.60083055833e+004 1.24005179036e+003 0106000020E50800000100000001030000000100000005000000E03113F38C20474188DA1ADB9142634140726A6B94204741B07B4EE669426341007FCF91FE1F4741D0BE4D2668426341A03E7819F71F474190631C1B90426341E03113F38C20474188DA1ADB91426341
16 LAKEWAY MUD 1.99805337165e+004 5.90416771226e+002 0106000020E5080000010000000103000000010000000900000040CA100AE92F474110A13411B3466341E09D3C7DE42F474198B6CE82AA466341A0BA19BD912F4741F08A1B80AF466341940F2FE9912F4741E9D4FBCEB24663410005BDDD902F4741B0CC491BB646634120440ECA8C2F4741403B9018BC466341E0865D22ED2F4741D06DCE02BA466341E0AAB0DAEA2F474170988569B646634140CA100AE92F474110A13411B3466341
17 LAKEWAY MUD 2.55495765553e+004 6.75755882634e+002 0106000020E5080000010000000103000000010000000800000080183EE7062F4741A03A533557466341208801F3F52E4741E836A58E55466341805FC108D32E4741685B85F96446634140DE1C01CF2E4741D8E7CCEA6A466341A063D3DFC92E47415008A8CE71466341E0CBB53AF42E4741A848726374466341C0F32A05292F4741588B715F5A46634180183EE7062F4741A03A533557466341
20 LAKEWAY MUD 1.54327655151e+004 5.08037611343e+002 0106000020E5080000010000000103000000010000000500000000A3626F4F284741402A23586044634140FFC13E36284741A8F42ECF4D44634100E74A4A06284741604256135244634140943F531F284741409C39B66344634100A3626F4F284741402A235860446341
27 WTCMUD NO. 7 6.92786595456e+005 3.61805221358e+003 0106000020E50800000100000001030000000100000018000000C0063953CF464741107CA79ED538634100190A95D246474110AE1AA1DA386341C0240A3EDE474741D866062A0439634180FC86331F484741B8A81D80EE386341E03C4D782848474190155C7FC2386341203E3FAAED4747418056C1F598386341C0BE4FB8ED474741B0F4E3B28A386341A08A5238C947474180DBCB047E386341E036F588A6474741389250786438634140FEF57170474741205693EF523863416028CABB3F4747414897B23D503863410081AAA732474741989B78844F386341601450391A474741903F8F535138634140948698EB46474170D55FC754386341A0068BD6D9464741703CF3B85C386341001E6513CC464741E0D4F5E06238634140A9C648CC464741C8048B7274386341A06B007ACC4647415043AEA684386341E07EA77ECC464741D8E2993086386341A00B156BE0464741B845446E91386341008BC1BB15474741C004DF82AF386341C05D1BB7EC464741401E7AF3C0386341C0EF4FB5CB464741B0DF1CFCCE386341C0063953CF464741107CA79ED5386341
...
\.
CREATE INDEX "mud_geom_gist" ON "raw_data"."mud" USING GIST ("geom");
COMMIT;
En resumen, estoy buscando la manera más rápida, fácil y robusta de subir cualquier shapefile a postgis en java.
No me importa si las soluciones utilizan geoherramientas, ya que he encontrado que las geoherramientas son muy engorrosas para mis necesidades muy simples -- cambiar el nombre de la columna de geometría de "the_geom" a "geom", por ejemplo, requiere generar un nuevo esquema desde cero con el nuevo nombre de la geometría, iterar a través de todas las características del almacén de datos de la forma, generar una nueva característica en el nuevo esquema, y luego mapear individualmente cada atributo del antiguo esquema al atributo correspondiente en el nuevo esquema!