RE: [FreeGeoCZ] invalid polygon geometry
MICHÁLEK Jan Mgr. <[email protected]>
| Newsgroups | gmane.comp.gis.grass.cz |
|---|---|
| Message-ID | <[email protected]> |
No, pata moznost je stara dobra rucni práce, kdyby jich bylo sto, tak bych na to prdel, esli jich je cca 10, tak bych to mozna zkusil opravit v ruce. Open jump tusim umi editovat wkt za ziva, nebo VIM. Pripadne rozebrat na maly kusy. No, polygon, kterej ma dva body, ten se da jen vyhodit (pokud nemas podle ceho to opravit). Co je to za dta?? Puvod, SRID atd. CO se tyce toho vyhazovani, muzes zkusit vyhazovat podle toho ST_IsValidReason Napr: Delete from table where ST%IsValidReason like '%Number of points must be 0 or >3%' Coz je sice trochu prasecke, ale co v dnesni době není. 10% je teda hodne, ja bych to nevyhazoval, zkus napr: Alter table tt Add column u_chyba smallint (tim typem si nejsem uplně jistej, možná umí pg boolean, já v tom moc nedělám) Update tt Set U_chyba = 1, geom = ST_Box2D(geom)/*nahradí vadnou gm kostkou (možná to neudělá a bude vřískat) a označí chyby*/ Nebo něco takovýho Ono jde hodně o to, co to sou za dta. Ty chyby můžou bejt nenáhodný, máš např. 10 dodavatelů a jeden používá debilní soft, nebo je to mamlas a všechno co dodal je špatný, přičemž, každej dělal jeden okres, takže bys měl ve výsledku díru jako vrata. Když to vyhážeš, nebudeš vědět, že tam ty chyby vůbec byly. Psals, že si to načet ze SHP, koukal ses do zdrojovejch dat?? Co je v nich, sou ty chyby už tam?? Otevřely se, zkoušel si víc různejch nástrojů na to otevření. Podle mojí zkušenosti, když má člověk hledat chyby v datech, tak je vždycky dobrý přemejšlet, odkud se tam ty chyby vzaly. Je. -----Original Message----- From: [email protected] [mailto:[email protected]] On Behalf Of Dan Barta Sent: Tuesday, April 20, 2010 5:01 PM To: Svobodná geoinformační infrastruktura Subject: Re: [FreeGeoCZ] invalid polygon geometry Diky za podnety, pokusim se shrnout: ---------------------------- 1) nejjednodussi je proste vadne polygony vyhazet, napr. takto: ---------------------------- TRUNCATE TABLE "polygon"; INSERT INTO "polygon" SELECT * FROM "polygonZaloha" WHERE ST_IsValid(the_geom); sic ono to vyhaze i ty prvky s relativne snesitelnymi (=pro export prekonatelnymi) problemy (cca 10% z 1600) ---------------------------- 2) vyber jen nekterych chyb podle typu konci padem ---------------------------- SELECT gid, ST_IsValidReason(the_geom) AS invalid from "polygon" where ST_IsValid(the_geom) <> true; NOTICE: Self-intersection at or near point -640685 -1.04412e+06 NOTICE: Holes are nested at or near point -640810 -1.04419e+06 NOTICE: Holes are nested at or near point -640778 -1.04425e+06 NOTICE: Ring Self-intersection at or near point -641245 -1.04472e+06 NOTICE: Holes are nested at or near point -640974 -1.04437e+06 NOTICE: Holes are nested at or near point -640722 -1.04436e+06 NOTICE: IllegalArgumentException: Number of points must be 0 or >3 NOTICE: IllegalArgumentException: Number of points must be 0 or >3 ERROR: POSTGIS2GEOS conversion failed ********** Chyba ********** 3) pokus o napravu Mam Ubuntu 9.10 na nem postgis 1.4.0. Ani stabilni 1.5.0 funkci ST_MakeValid() nema. V trunk-devel 2.0 uz se neco chysta [1] a da se to zpetne importovat[2] jako funkce cleaGeometry(), ale na mem vzorku to spadne stejne jako vyse: TRUNCATE TABLE "polygon"; INSERT INTO "polygon" SELECT * FROM "polygonZaloha"; UPDATE "polygon" SET the_geom = cleanGeometry(the_geom) WHERE NOT ST_IsValid(the_geom); Toz tak jsou realizovane vase postrehy, pokud jsem neco opomnel dejte vedet. diky a zdravi Dan Barta [1] http://trac.osgeo.org/postgis/ticket/399 [2] http://www.sogis1.so.ch/sogis/dl/postgis/cleanGeometry.sql __________ Informace od ESET NOD32 Antivirus, verze databaze 5045 (20100420) __________ Tuto zpravu proveril ESET NOD32 Antivirus. http://www.eset.cz __________ Informace od ESET NOD32 Antivirus, verze databaze 5045 (20100420) __________ Tuto zpravu proveril ESET NOD32 Antivirus. http://www.eset.cz _______________________________________________ FreeGeoCZ mailing list [email protected] http://mailman.fsv.cvut.cz/mailman/listinfo/freegeocz