Re: [FreeGeoCZ] invalid polygon geometry
Dan Barta <[email protected]>
| Newsgroups | gmane.comp.gis.grass.cz |
|---|---|
| Message-ID | <[email protected]> |
Diky, ja bych to jen shrnul a) rucne se do WKT toho nechystam b) funkce ST_IsValidReason konci padem bez tabulkoveho vystupu, takze je nepouzitelna (ledaze bych vypnul transakce a dival se kde to padne) c) obejit problem umim, ale to nebyla podstata dotazu kazdopadne diky, jdu cestou c) zdravi Dan B. 2010/4/21 MICHÁLEK Jan Mgr. <[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); _______________________________________________ FreeGeoCZ mailing list [email protected] http://mailman.fsv.cvut.cz/mailman/listinfo/freegeocz