[NUUG kart] ref [OSM-talk] Fixing broken multipolygons

Sandor Seres sandors39 at gmail.com
Mon Mar 6 21:26:51 CET 2017


Ja, det blir en ganske stort bakover skritt for alle "map-makere" som bruker
osm2pgsql. "Hvite områder/flekker" er (veldig) merkbare for større
objekttyper og som rendres med god kontrast (fe. som skoger, dog noen steder
dette er bare mngel av kildedata). Men, hvite flekker blir for alle areal
objekttyper (elver, innsjøer, farmer...) i alle OSM kart som bruker
osm2pgsql (og det er de fleste). Ignorering av "broken multypolygon
relations" (om vi vet hva egentlig dette betyr) og venting på manuell/editor
("do-ocracy") basert reparasjoner, som er foreslott i de refererte lenkene,
vil ha store og farlige konsekvenser. Og dette gjelder spesielt OSM baserte
GIS systemer og modern vektor-datalag baserte digital kartografi. Der vi
viser individuelle lag (fe. bare skoger), bare noen få lag, endrer lagenes Z
rekkefølge i virkårlig måte, gjør vilkårlig og kontinuerlig skalerin,
rotasjon, tilting, 3D simulering, skygging, navigasjon, statistiske
analyser, kvantitave estimater ... osv. Og, aller verste er at problemene er
mye, mye større, mer alvårlige og kompliderte enn bare "broken
multypolygons". Heldigvis, det finnes en helt annen QA model hvor vi kan unngå
de fleste anomaliene som preger osm2pgsql og hvor vi kan forberede OSM input
data ner den teoretisk mylige kvaliteten. Denne modellen er basert på OSM
kildedata. Om dette har vi snakket flere ganger og la oss illustrer på nytt
nettopp på OSM skog areal objekter.
I forberedelse vi kan behandle individuelle skogtyper eller smelte/merge
sammen flere typer. La oss merge sammen alle skogstyper i en arealtype - skog
(det er den du ser i OSM kart). Dette skjer ved data/geometry ekstraksjon
fra OSM kildedata (OSM dump) og skog relatarte tagger. Denne ekstraksonen
gir oss en stor (kolossal) sett av polilinjer. Så gjør vi trivielle korreksjoner 
(som de inspektorene gjør fra lenkene) og mere avanserte som lineære og 
brudd sammenkoblinger, corridor replika filtrering/elimineringer, lukking og 
partiell lukking av opne polygoner osv. som slutter med defragmentering. 
Det finnes ingen relasjons forutsetninger på input siden i det hele tatt. 
Polilinjer og polygoner kan ha vilkorlige gjensidige relasjoner. Sluttresultat 
er et sett av enkle/primitive (skogs) arealer (en og bare en container/outer og 
null eller vilkårlig antall hull polygoner). Disse er topologisk disjunktive og kan 
bli kjempe store (med over 60-70 tusen hull). For illustrasjon se på bilde 
Forests_ON_LakesPlusRivers here
https://drive.google.com/file/d/0B6qGm3k2qWHqSkstbDBHTTc0Nlk/view?usp=sharing
 (grønt er skog mens lyse, middelst og mørke blå er elver, innsjøer og
global-ocean). Desverre, her er det veldig stor mengde av innsjøer/elver
dekket (delvis eller helt) av skog. I en annen Z rekkefølge vi kan se
innsjøer/elver over skog arealer i bilde LakesPlusRivers_ON_Forests here
https://drive.google.com/file/d/0B6qGm3k2qWHqOGxfaURtMnlla00/view?usp=sharing
Vi kan se at begge rekkefølger er fulle av feil (skog og vann arealer overskriver
hverandre).  Problemet er at man kan ikke ha noen som helst forutsetning om
grensepolygon relasoner mellom areal classene (for illustrasjon se
Borders_OF_ForestsLakes hvor mørke-, lyse-grønn og blå er container, hull og
container polygoner for skog og innsjøer) here 
https://drive.google.com/file/d/0B6qGm3k2qWHqSl93OEFhOGJQMms/view?usp=sharing
Det var/er flere kompensasjons forsøk som rendering av hull, predefinert 
renderings rekkefølge, rendering av mindre objekter over større, ignorering 
av roller/orientasjon i multypolygon osv. (se OSM Wiki endrings historie) 
men med lite help. Selv i kart rendering disse endringene, som regel, hjelper 
noen steder og ødelegger andre steder, så vi har full forståelse for frustrasjoner 
av osm2pgsqls skaperne. 
Så, hva kan vi gjøre i en slik situasjon? Heldigvis veldig mye.
La oss bruke S, I, E prefikser og 0, 1 sufikser for skog, insjø, elv og
conteiner/outer, hull polygon på rad (så, S0 og S1 er mørke og lyse grønne
polygoner i bilde Borders_OF_ForestsLakes.jpg). La oss ha {S0} og {S1,I0,E0}
polygon mengder for hele Planeten (deres relasjoner er irrelevante). Da, vi
kan bevise eksistens og finne en såkalt minimal enkle areal dekning
{D}={S0}-{S1,I0,E0}. Med andre ord vi kan finne et minimal sett av
enkle/primitive disjunktive arealer hvor hvert punkt fra en deknings areal D
er et punkt i minst en polygon S0 men ikke punk i noen av S1, I0 ogE0
polygoner og omvent. I visuel interpretasjo dette betyr at i alle enkle
skogs arealene vi har laget (utvidet) tome plasser (huller) for insjøer og
elver. En slik illutrasjon er vist i bilde Forests_ON_LakesPlusRivers_NEW her
https://drive.google.com/file/d/0B6qGm3k2qWHqTmFFR05RZ1V0elE/view?usp=sharing
I en slik datastruktur uansett renderings rekkefølge, skogs arealer er presenterte 
med best mylig kvalitet fra OSM kildedata. En slik prosedyre er del av vår 
data-preparation-tools-chain. For interreserte vi understreker at en slik prosedure 
er en ekte utfordring for forskere og høyere grads stundenter i topology, algoritmer 
og, ikke minst, i programering.
Mvh. Sandor og Henrik

-----Original Message-----
From: kart-bounces at nuug.no [mailto:kart-bounces at nuug.no] On Behalf Of Fredrik
Sent: 19 February 2017 14:01
To: kart at nuug.no
Subject: [NUUG kart] ref [OSM-talk] Fixing broken multipolygons

Noen gjorde meg oppmerksom på problemer i de skandinaviske skoger. De gjør endringer på måten multipolygoner rendres og det fører til at flere som ikke er korrekte blir droppet i tegneprosessen:

https://lists.openstreetmap.org/pipermail/talk/2017-February/077544.html


"There are some notable holes, for example in the woods of Scandinavia."


https://osmium.osm2pgsql.paulnorman.ca/#8/60.184/7.061

Ha kartet der, dra markøren litt østover og se på skogene i sør-øst


--

FredrikLindseth

_______________________________________________
kart mailing list
kart at nuug.no
https://lists.nuug.no/mailman/listinfo/kart



More information about the kart mailing list