RE: [FreeGeoCZ] invalid polygon geometry
MICHÁLEK Jan Mgr. <[email protected]>
| Newsgroups | gmane.comp.gis.grass.cz |
|---|---|
| Message-ID | <[email protected]> |
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), když sou ty shpcka blbe udelany (třeba 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 kožich. --MS 08 ma fci geometry.STMakeValid(), kera vraci opravenou geom, v postgisu bude stopro neco takovyho taky, tim bzch to rovnou přemlasknul: 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á geoinformační 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