Kdy jsem to cetl tak me napadlo, e bych se nejdríve podíval proc ta geometrie není validní (tj. zobrazil bych si vzorek tech nevalidních geoprvku), pak bych se ji teprve snail opravit. Mel jsem kdysi problém s multiliniemi, postgis házel nejakou pro me nesrozumitelnou hláku u dvou silnicních segmentu, tak jsem se na ne podíval a zjistil, e jako jediné dva jsou reprezentovány multigeometrií. Stacilo je rozbít do nekolika geoprvku a problém zmizel.
J
-----Original Message-----
From: [email protected] on behalf of MICHÁLEK Jan Mgr.
Sent: Tue 20.4.2010 7:37
To: Svobodná geoinformacní infrastruktura
Subject: RE: [FreeGeoCZ] invalid polygon geometry
No, ono shp není uplne idealni format co se tyce topologie, je to tam udelany tak, ze vnejsi hranice ma vertexy serazeny posmeru hodinovejch rucicek a diry protismeru (nebo mozna naopak), kdyz sou ty shpcka blbe udelany (treba export z nejakyho dxf, nebo neceho takovyho) tak muzou bejt pekne nakopnuty.
Ja bych postupoval nasledovne:
Select astext(geometry_col) from table where not isvalid(geometry_col) --nebo neco takovyho, ja to delal pod MS 08, ale ten syntax bude dost podobnej,
--a podival bych se, co tam je za kozich.
--MS 08 ma fci geometry.STMakeValid(), kera vraci opravenou geom, v postgisu bude stopro neco takovyho taky, tim bzch to rovnou premlasknul:
Update table
Set geom = MakeValid(geom)
Where not IsValid(geom)
Nebo bych to nejdriv srovnal(co to s tim udela)
Select astext(geometry_col), astext(MakeValid(geometry_col)) from table where not isvalid(geometry_col)
Jelen
-----Original Message-----
From: [email protected] [mailto:[email protected]] On Behalf Of Dan Barta
Sent: Monday, April 19, 2010 5:11 PM
To: Svobodná geoinformacní infrastruktura
Subject: [FreeGeoCZ] invalid polygon geometry
Zdravim konf,
pres shp2pgsql jsem nahrnul do Postgis polygonovy SHP.
Problem se jevil jen opticky v Postgis/Qgisu, kde pri nekterych podrobnostech na dvou mistech zmizely vsechny prvky.
Nyni jsem se pokusil o export pgsql2shp, nebo vubec dump, ktery konci:
pg_dump: SQL command failed
pg_dump: Error message from server: ERROR: geometry requires more points
pg_dump: The command was: COPY public."polygonSEVEN" (gid, idch, id, delka, sirka, plocha, poznamka, stav, sirka_min, povrch, tpovrch, etapa, uroven, the_geom) TO stdout;
Tedy predpokladam, ze problem zni
* self intersection
nebo
* invalid rings
Zkusil jsem podle
http://postgis.refractions.net/pipermail/postgis-users/2009-March/023064.html
remove_invalidrings(the_geom);
remove_invalidpoly(geometry) - mi neselv lozit do fukci
INSERT INTO "polygonSEVENtest" SELECT * FROM "polygonSEVEN"; update "polygonSEVENtest" SET the_geom = remove_invalidrings(the_geom);
a) narazi na omezeni "enforce_geotype_the_geom"
b) nebo kdyz omezeni natvrdo odstranim tak na :
ERROR: lwpoly_from_lwlines: shell must have at least 4 points
KONTEXT: SQL function "remove_invalidrings" statement 1
********** Chyba **********
ERROR: lwpoly_from_lwlines: shell must have at least 4 points Stav SQL: XX000 Kontext:SQL function "remove_invalidrings" statement 1
Mate nekdo nejake hlubsi zkusenosti? Vite jak dale?
diky a zdravi
Dan Barta
__________ Informace od ESET NOD32 Antivirus, verze databaze 5041 (20100419) __________
Tuto zpravu proveril ESET NOD32 Antivirus.
http://www.eset.cz
__________ Informace od ESET NOD32 Antivirus, verze databaze 5042 (20100419) __________
Tuto zpravu proveril ESET NOD32 Antivirus.
http://www.eset.cz
_______________________________________________
FreeGeoCZ mailing list
[email protected]
http://mailman.fsv.cvut.cz/mailman/listinfo/freegeocz
_______________________________________________
FreeGeoCZ mailing list
[email protected]
http://mailman.fsv.cvut.cz/mailman/listinfo/freegeocz
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.