[Gfoss] Problema con PostGIS SRID

Salve,
sto cercando di importare in Postgis dei dati utilizzando shp2pgsql,
i dati sono in wgs84, l'sql che ottengo cerca di aggingere il valore 4326 nella colonna SRID della tabella geometry_colums.
Quando lancio l'SQL per creare la tabella ottengo però una violazione della seguente constraint:

NOTICE: CREATE TABLE will create implicit sequence "prova_gid_seq" for serial column "prova.gid"
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "prova_pkey" for table "prova"
Query result with 1 rows discarded.

ERROR: new row for relation "prova" violates check constraint "enforce_srid_the_geom"

enforce_srid_the_geom CHECK (srid(the_geom) = -1);

Come posso fare in modo di aggiungere geometrie che non abbiamo solamente SRID=-1?

Grazie
Maurizio

--

Il CONSTRAINT “enforce_srid_the_geom CHECK (srid(the_geom) = -1);” viene create durante la creazione della tabella, quindi dovrebbe essere incluso nell’sql che ti ritorna da shp2pgsql. Cosa hai nell’sql? Se non sbaglio, dovrebbe esserci piuttosto “enforce_srid_the_geom CHECK (srid(the_geom) = 4326);”

Giovanni

2008/5/17 Maurizio Latini <m.latini@geographike.it>:

Salve,
sto cercando di importare in Postgis dei dati utilizzando shp2pgsql,
i dati sono in wgs84, l’sql che ottengo cerca di aggingere il valore 4326 nella colonna SRID della tabella geometry_colums.
Quando lancio l’SQL per creare la tabella ottengo però una violazione della seguente constraint:

NOTICE: CREATE TABLE will create implicit sequence “prova_gid_seq” for serial column “prova.gid”
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index “prova_pkey” for table “prova”
Query result with 1 rows discarded.

ERROR: new row for relation “prova” violates check constraint “enforce_srid_the_geom”

enforce_srid_the_geom CHECK (srid(the_geom) = -1);

Come posso fare in modo di aggiungere geometrie che non abbiamo solamente SRID=-1?

Grazie
Maurizio


Iscriviti all’associazione GFOSS.it: http://www.gfoss.it/drupal/iscrizione
Gfoss@faunalia.com
http://www.faunalia.com/cgi-bin/mailman/listinfo/gfoss
Questa e’ una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non rispecchiano necessariamente
le posizioni dell’Associazione GFOSS.it.

Ciao Giovanni,
l'sql di crezione della tabella è questo:

BEGIN;
CREATE TABLE "prova" (gid serial PRIMARY KEY,
"azi_cod_az" varchar(8),
"anno_focol" int4,
"num_focola" int4,
"data_confe" varchar(35),
"data_estin" varchar(35),
"link_indag" varchar(200),
"code_asl" varchar(4),
"mal_id_mal" varchar(10),
"longitudin" numeric,
"latitudine" numeric,
"shape_fid" int4);
SELECT AddGeometryColumn('','prova','the_geom','4236','POINT',2);
INSERT INTO "prova" ("azi_cod_az","anno_focol","num_focola","data_confe","data_estin","link_indag","code_asl","mal_id_mal","longitudin","latitudine","shape_fid",the_geom) VALUES ('011CH014','2002','100','2002-05-17 00:00:00.0','2002-05-20 00:00:00.0','/emergenze/032002_100.pdf','P103','3','42.005000000','14.514400000','1','0101000000F31FD26F5F072D40713D0AD7A3004540');
END;

come vedi non c'è traccia del constraint...
Non mi riesce di capire cosa lo genera.

Maurizio

G. Allegri ha scritto:

Il CONSTRAINT "enforce_srid_the_geom CHECK (srid(the_geom) = -1);" viene create durante la creazione della tabella, quindi dovrebbe essere incluso nell'sql che ti ritorna da shp2pgsql. Cosa hai nell'sql? Se non sbaglio, dovrebbe esserci piuttosto "enforce_srid_the_geom CHECK (srid(the_geom) = 4326);"

Giovanni

2008/5/17 Maurizio Latini <m.latini@geographike.it <mailto:m.latini@geographike.it>>:

    Salve,
    sto cercando di importare in Postgis dei dati utilizzando shp2pgsql,
    i dati sono in wgs84, l'sql che ottengo cerca di aggingere il
    valore 4326 nella colonna SRID della tabella geometry_colums.
    Quando lancio l'SQL per creare la tabella ottengo però una
    violazione della seguente constraint:

    NOTICE: CREATE TABLE will create implicit sequence
    "prova_gid_seq" for serial column "prova.gid"
    NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index
    "prova_pkey" for table "prova"
    Query result with 1 rows discarded.

    ERROR: new row for relation "prova" violates check constraint
    "enforce_srid_the_geom"

    enforce_srid_the_geom CHECK (srid(the_geom) = -1);

    Come posso fare in modo di aggiungere geometrie che non abbiamo
    solamente SRID=-1?

    Grazie
    Maurizio

    --

    _______________________________________________
    Iscriviti all'associazione GFOSS.it:
    http://www.gfoss.it/drupal/iscrizione
    Gfoss@faunalia.com <mailto:Gfoss@faunalia.com>
    http://www.faunalia.com/cgi-bin/mailman/listinfo/gfoss
    Questa e' una lista di discussione pubblica aperta a tutti.
    I messaggi di questa lista non rispecchiano necessariamente
    le posizioni dell'Associazione GFOSS.it.

--

<http://www.geographike.it>Maurizio Latini
GEOGRAPHIKE S.R.L.
Via Sansedoni 7, 53100 SIENA
Telefono/Fax: 0577 588408
m.latini@geographike.it <mailto:m.latini@geographike.it>

INFORMAZIONI STRETTAMENTE CONFIDENZIALI In ottemperanza al D.Lgs. 196/2003 sulla tutela dei dati personali, le informazioni contenute in questo messaggio sono strettamente riservate e sono esclusivamente indirizzate al destinatario indicato (oppure alla persona responsabile di rimetterlo al destinatario), tenendo presente che qualsiasi uso, riproduzione o divulgazione di questo messaggio è vietata. Nel caso in cui aveste ricevuto questa mail per errore, vogliate avvertire il mittente al più presto a mezzo posta elettronica e subito dopo distruggerla.

Maurizio Latini wrote:

SELECT AddGeometryColumn('','prova','the_geom','4236','POINT',2);

Ciao,

non capisco i due "apicetti" prima del nome dela tabella all'interno
del "AddGeometryColumn()???

Prova a toglierli, compresa la virgola!

Ciao

-----
Salvatore Larosa
GPG: 0xE504BBE2 (FP: D9B2 CA87 81CD 1B91 E24D 3B42 D0F7 FA01 E504 BBE2)
--
View this message in context: http://www.nabble.com/Problema-con-PostGIS-SRID-tp17292790p17301611.html
Sent from the Gfoss mailing list archive at Nabble.com.

Salvator*eL*arosa wrote:

Maurizio Latini wrote:

SELECT AddGeometryColumn('','prova','the_geom','4236','POINT',2);

Ciao,

non capisco i due "apicetti" prima del nome dela tabella all'interno
del "AddGeometryColumn()???

Prova a toglierli, compresa la virgola!

Ciao

Con apici o senza è la stessa cosa....rimangio!

Non capisco cosa non và!

-----
Salvatore Larosa
GPG: 0xE504BBE2 (FP: D9B2 CA87 81CD 1B91 E24D 3B42 D0F7 FA01 E504 BBE2)
--
View this message in context: http://www.nabble.com/Problema-con-PostGIS-SRID-tp17292790p17302530.html
Sent from the Gfoss mailing list archive at Nabble.com.

Maurizio Latini wrote:

Ciao Giovanni,
l'sql di crezione della tabella è questo:

BEGIN;
CREATE TABLE "prova" (gid serial PRIMARY KEY,
"azi_cod_az" varchar(8),
"anno_focol" int4,
"num_focola" int4,
"data_confe" varchar(35),
"data_estin" varchar(35),
"link_indag" varchar(200),
"code_asl" varchar(4),
"mal_id_mal" varchar(10),
"longitudin" numeric,
"latitudine" numeric,
"shape_fid" int4);
SELECT AddGeometryColumn('','prova','the_geom','4236','POINT',2);
INSERT INTO "prova"
("azi_cod_az","anno_focol","num_focola","data_confe","data_estin","link_indag","code_asl","mal_id_mal","longitudin","latitudine","shape_fid",the_geom)
VALUES ('011CH014','2002','100','2002-05-17 00:00:00.0','2002-05-20
00:00:00.0','/emergenze/032002_100.pdf','P103','3','42.005000000','14.514400000','1','0101000000F31FD26F5F072D40713D0AD7A3004540');
END;

come vedi non c'è traccia del constraint...
Non mi riesce di capire cosa lo genera.

Maurizio

G. Allegri ha scritto:

Il CONSTRAINT "enforce_srid_the_geom CHECK (srid(the_geom) = -1);"
viene create durante la creazione della tabella, quindi dovrebbe
essere incluso nell'sql che ti ritorna da shp2pgsql. Cosa hai
nell'sql? Se non sbaglio, dovrebbe esserci piuttosto
"enforce_srid_the_geom CHECK (srid(the_geom) = 4326);"

Giovanni

2008/5/17 Maurizio Latini <m.latini@geographike.it
<mailto:m.latini@geographike.it>>:

    Salve,
    sto cercando di importare in Postgis dei dati utilizzando shp2pgsql,
    i dati sono in wgs84, l'sql che ottengo cerca di aggingere il
    valore 4326 nella colonna SRID della tabella geometry_colums.
    Quando lancio l'SQL per creare la tabella ottengo però una
    violazione della seguente constraint:

    NOTICE: CREATE TABLE will create implicit sequence
    "prova_gid_seq" for serial column "prova.gid"
    NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index
    "prova_pkey" for table "prova"
    Query result with 1 rows discarded.

    ERROR: new row for relation "prova" violates check constraint
    "enforce_srid_the_geom"

    enforce_srid_the_geom CHECK (srid(the_geom) = -1);

    Come posso fare in modo di aggiungere geometrie che non abbiamo
    solamente SRID=-1?

    Grazie
    Maurizio

    --

    _______________________________________________
    Iscriviti all'associazione GFOSS.it:
    http://www.gfoss.it/drupal/iscrizione
    Gfoss@faunalia.com <mailto:Gfoss@faunalia.com>
    http://www.faunalia.com/cgi-bin/mailman/listinfo/gfoss
    Questa e' una lista di discussione pubblica aperta a tutti.
    I messaggi di questa lista non rispecchiano necessariamente
    le posizioni dell'Associazione GFOSS.it.

--

<http://www.geographike.it>Maurizio Latini
GEOGRAPHIKE S.R.L.
Via Sansedoni 7, 53100 SIENA
Telefono/Fax: 0577 588408
m.latini@geographike.it <mailto:m.latini@geographike.it>

INFORMAZIONI STRETTAMENTE CONFIDENZIALI In ottemperanza al D.Lgs.
196/2003 sulla tutela dei dati personali, le informazioni contenute in
questo messaggio sono strettamente riservate e sono esclusivamente
indirizzate al destinatario indicato (oppure alla persona responsabile
di rimetterlo al destinatario), tenendo presente che qualsiasi uso,
riproduzione o divulgazione di questo messaggio è vietata. Nel caso in
cui aveste ricevuto questa mail per errore, vogliate avvertire il
mittente al più presto a mezzo posta elettronica e subito dopo
distruggerla.

_______________________________________________
Iscriviti all'associazione GFOSS.it: http://www.gfoss.it/drupal/iscrizione
Gfoss@faunalia.com
http://www.faunalia.com/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non rispecchiano necessariamente
le posizioni dell'Associazione GFOSS.it.

Così funziona ma non mi chiedere perchè! Sto cercando di capirlo anch'io!

BEGIN;
CREATE TABLE "prova" (gid serial PRIMARY KEY,
"azi_cod_az" varchar(8),
"anno_focol" int4,
"num_focola" int4,
"data_confe" varchar(35),
"data_estin" varchar(35),
"link_indag" varchar(200),
"code_asl" varchar(4),
"mal_id_mal" varchar(10),
"longitudin" numeric,
"latitudine" numeric,
"shape_fid" int4) with oids;
SELECT AddGeometryColumn('','prova','the_geom','4326','POINT',2);
INSERT INTO "prova"
("azi_cod_az","anno_focol","num_focola","data_confe","data_estin","link_indag","code_asl","mal_id_mal","longitudin","latitudine","shape_fid",the_geom)
VALUES ('011CH014','2002','100','2002-05-17 00:00:00.0','2002-05-20
00:00:00.0','/emergenze/032002_100.pdf','P103','3','42.005000000','14.514400000','1','SRID=4326;0101000000F31FD26F5F072D40713D0AD7A3004540');
END;

BOH!

Ciao

-----
Salvatore Larosa
GPG: 0xE504BBE2 (FP: D9B2 CA87 81CD 1B91 E24D 3B42 D0F7 FA01 E504 BBE2)
--
View this message in context: http://www.nabble.com/Problema-con-PostGIS-SRID-tp17292790p17308072.html
Sent from the Gfoss mailing list archive at Nabble.com.

On Sun, May 18, 2008 at 02:38:52PM -0700, Salvator*eL*arosa wrote:

Così funziona ma non mi chiedere perchè! Sto cercando di capirlo anch'io!

BEGIN;
CREATE TABLE "prova" (gid serial PRIMARY KEY,
"azi_cod_az" varchar(8),
"anno_focol" int4,
"num_focola" int4,
"data_confe" varchar(35),
"data_estin" varchar(35),
"link_indag" varchar(200),
"code_asl" varchar(4),
"mal_id_mal" varchar(10),
"longitudin" numeric,
"latitudine" numeric,
"shape_fid" int4) with oids;
SELECT AddGeometryColumn('','prova','the_geom','4326','POINT',2);
INSERT INTO "prova"
("azi_cod_az","anno_focol","num_focola","data_confe","data_estin","link_indag","code_asl","mal_id_mal","longitudin","latitudine","shape_fid",the_geom)
VALUES ('011CH014','2002','100','2002-05-17 00:00:00.0','2002-05-20
00:00:00.0','/emergenze/032002_100.pdf','P103','3','42.005000000','14.514400000','1','SRID=4326;0101000000F31FD26F5F072D40713D0AD7A3004540');
END;

A occhio e croce se usi UpdateGeometrySRID() dopo AddGeometryColumn()
per impostare 4326 su tutta la geometry risolvi la cosa. Credo che il
tutto sia legato al fatto che il SRID e' memorizzato in 2 posti diversi
e tu ne modifichi solo uno, manca la modifica in geometry_columns.
Curiosita': ma tu avevi passato uno shape completo di .prj?

--
Francesco P. Lovergine

Si avevo passato uno shape completo di .prj

Maurizio

Francesco P. Lovergine ha scritto:

On Sun, May 18, 2008 at 02:38:52PM -0700, Salvator*eL*arosa wrote:
  

Così funziona ma non mi chiedere perchè! Sto cercando di capirlo anch'io!

BEGIN;
CREATE TABLE "prova" (gid serial PRIMARY KEY,
"azi_cod_az" varchar(8),
"anno_focol" int4,
"num_focola" int4,
"data_confe" varchar(35),
"data_estin" varchar(35),
"link_indag" varchar(200),
"code_asl" varchar(4),
"mal_id_mal" varchar(10),
"longitudin" numeric,
"latitudine" numeric,
"shape_fid" int4) with oids;
SELECT AddGeometryColumn('','prova','the_geom','4326','POINT',2);
INSERT INTO "prova"
("azi_cod_az","anno_focol","num_focola","data_confe","data_estin","link_indag","code_asl","mal_id_mal","longitudin","latitudine","shape_fid",the_geom)
VALUES ('011CH014','2002','100','2002-05-17 00:00:00.0','2002-05-20
00:00:00.0','/emergenze/032002_100.pdf','P103','3','42.005000000','14.514400000','1','SRID=4326;0101000000F31FD26F5F072D40713D0AD7A3004540');
END;

A occhio e croce se usi UpdateGeometrySRID() dopo AddGeometryColumn()
per impostare 4326 su tutta la geometry risolvi la cosa. Credo che il
tutto sia legato al fatto che il SRID e' memorizzato in 2 posti diversi
e tu ne modifichi solo uno, manca la modifica in geometry_columns. Curiosita': ma tu avevi passato uno shape completo di .prj?

--

<http://www.geographike.it>Maurizio Latini
GEOGRAPHIKE S.R.L.
Via Sansedoni 7, 53100 SIENA
Telefono/Fax: 0577 588408
m.latini@geographike.it <mailto:m.latini@geographike.it>

INFORMAZIONI STRETTAMENTE CONFIDENZIALI In ottemperanza al D.Lgs. 196/2003 sulla tutela dei dati personali, le informazioni contenute in questo messaggio sono strettamente riservate e sono esclusivamente indirizzate al destinatario indicato (oppure alla persona responsabile di rimetterlo al destinatario), tenendo presente che qualsiasi uso, riproduzione o divulgazione di questo messaggio è vietata. Nel caso in cui aveste ricevuto questa mail per errore, vogliate avvertire il mittente al più presto a mezzo posta elettronica e subito dopo distruggerla.

On Wed, May 21, 2008 at 12:57:59PM +0200, Maurizio Latini wrote:

Si avevo passato uno shape completo di .prj

Ergo shp2pgsql non e' molto furbo perche' non si porta dietro la
proiezione.

A occhio e croce se usi UpdateGeometrySRID() dopo AddGeometryColumn()
per impostare 4326 su tutta la geometry risolvi la cosa. Credo che il
tutto sia legato al fatto che il SRID e' memorizzato in 2 posti diversi
e tu ne modifichi solo uno, manca la modifica in geometry_columns.
Curiosita': ma tu avevi passato uno shape completo di .prj?

--
Francesco P. Lovergine

On Wed, May 21, 2008 at 02:36:14PM +0200, Francesco P. Lovergine wrote:

On Wed, May 21, 2008 at 12:57:59PM +0200, Maurizio Latini wrote:
> Si avevo passato uno shape completo di .prj
>

Ergo shp2pgsql non e' molto furbo perche' non si porta dietro la
proiezione.

No, da quando ho scoperto l'esistenza del file .prj ho pensato
avremmo dovuto implementare una findSridByProj().
Non m'e' mai sembrata una cosa facile, e il .prj non e' documentato.

Ad ogni modo, sembra un task interessante come "freedom excercise":
consideratemi a disposizione come tutor :slight_smile:

--strk;

On Wed, May 21, 2008 at 02:55:14PM +0200, strk wrote:

No, da quando ho scoperto l'esistenza del file .prj ho pensato
avremmo dovuto implementare una findSridByProj().
Non m'e' mai sembrata una cosa facile, e il .prj non e' documentato.

Dunque, ho fatto qualche ricerca e tanto per complicare l'esistenza
esistono storicamente due formati PRJ usati dal PE di ESRI
Uno e' il WKT che e' ben documentato:

http://geoapi.sourceforge.net/snapshot/javadoc/org/opengis/referencing/doc-files/WKT.html

ed e' trattato anche da GDAL. Nel PRJ, il tutto e' semplicemente
'compresso' su una sola riga. Ma esiste anche un formato piu' vecchio
usato in passato da ESRI e proprietario. Ma diciamo che ce ne freghiamo :slight_smile:

--
Francesco P. Lovergine

Francesco P. Lovergine ha scritto:

On Wed, May 21, 2008 at 02:55:14PM +0200, strk wrote:

No, da quando ho scoperto l'esistenza del file .prj ho pensato
avremmo dovuto implementare una findSridByProj().
Non m'e' mai sembrata una cosa facile, e il .prj non e' documentato.

Dunque, ho fatto qualche ricerca e tanto per complicare l'esistenza
esistono storicamente due formati PRJ usati dal PE di ESRI
Uno e' il WKT che e' ben documentato:

http://geoapi.sourceforge.net/snapshot/javadoc/org/opengis/referencing/doc-files/WKT.html

ed e' trattato anche da GDAL. Nel PRJ, il tutto e' semplicemente
'compresso' su una sola riga. Ma esiste anche un formato piu' vecchio
usato in passato da ESRI e proprietario. Ma diciamo che ce ne freghiamo :slight_smile:

Certo che il prj è documentato: è un WKT [1]! A tal proposito, nelle
GDAL/OGR ci sono diversi parser da e verso WKT, proj4, ecc. [2]

Ciao
Antonio

[1] http://en.wikipedia.org/wiki/Well-known_text
[2] http://www.gdal.org/ogr/classOGRSpatialReference.html

On Thu, May 22, 2008 at 04:25:31PM +0200, Francesco P. Lovergine wrote:

On Wed, May 21, 2008 at 02:55:14PM +0200, strk wrote:
> No, da quando ho scoperto l'esistenza del file .prj ho pensato
> avremmo dovuto implementare una findSridByProj().
> Non m'e' mai sembrata una cosa facile, e il .prj non e' documentato.
>
Dunque, ho fatto qualche ricerca e tanto per complicare l'esistenza
esistono storicamente due formati PRJ usati dal PE di ESRI
Uno e' il WKT che e' ben documentato:

http://geoapi.sourceforge.net/snapshot/javadoc/org/opengis/referencing/doc-files/WKT.html

ed e' trattato anche da GDAL. Nel PRJ, il tutto e' semplicemente
'compresso' su una sola riga. Ma esiste anche un formato piu' vecchio
usato in passato da ESRI e proprietario. Ma diciamo che ce ne freghiamo :slight_smile:

Come sai "insieme a te non ci sto piu' guardo le nuvole lassu'".
Quindi, per ricapitolare:
1. spatial_ref_sys ha un campo col WKT.
2. il .proj ha un WKT

Ora, quando importi, che vuoi che succeda ?
Riutilizzare uno SRID esistente se il WKT corrisponde o crearne uno nuovo ?
Nel primo caso, ti serve un findSridByProj().
Quel che non e' facile e' definire l'operatore di uguaglianza....

Se si vuole fare qualcosa un po' smart conviene aggiungere un datatype,
il che significa hard-upgrade di postgis.
Altrimenti una sola funzione che prende due stringhe e fa la comparazione
dopo averle parsate...

Ricorda inoltre che l'output di shp2pgsql NON e' completamente transizionale,
ma divide gli insert in blocchi. Non e' una cosa molto sana se due import
finiscono con aggiungere due SRID con lo stesso WKT...

--strk;