Hvordan å kartlegge en breddegrad / lengdegrad til en forvrengt kartet?

stemmer
22

Jeg har en haug av breddegrad / lengdegrad-par som er tilordnet kjent x / y-koordinater på et (geografisk forvrengt) kartet.

Så jeg har en mer breddegrad / lengdegrad par. Jeg ønsker å plotte den på kartet som best mulig. Hvordan går jeg om du gjør dette?

Ved første jeg bestemte meg for å lage et system av lineære ligninger for de tre nærmeste lat / lang poeng og beregne en transformasjon fra disse, men dette fungerer ikke bra i det hele tatt. Siden det er et lineært system, kan jeg ikke bruke mer severdigheter heller.

Du kan ikke anta Nord er opp: alt du har er de eksisterende lat / lang> X / Y-kartlegginger.

EDIT: det er ikke en Mercator projeksjon, eller noe sånt. Det er vilkårlig forvrengt for lesbarhet (tror subway kart). Jeg ønsker å bruke bare de nærmeste fem til ti kartlegginger slik at forvrengning på andre deler av kartet ikke påvirke kartlegging Jeg prøver å beregne.

Videre hele kartet er i et svært lite geografisk område, så det er ingen grunn til å bekymre seg om i verden - flat jord forutsetningene er gode nok.

Publisert på 05/08/2008 klokken 04:55
kilden bruker
På andre språk...                            


4 svar

stemmer
8

Er det noen mer spesifikke detaljer om hva slags forvrengning? Hvis for eksempel dine breddegrader og lengdegrader er "forvrengt" på din 2D-kart ved hjelp av en Mercator projeksjon, er konvertering matematikk lett tilgjengelig .

Hvis kartet er forvrengt virkelig tilfeldig, det er mange ting du kan prøve, men det enkleste ville trolig være å beregne en vektet gjennomsnitt fra dine eksisterende punkt kartlegginger. Vektene kan være squared inverse av x / y avstand fra den nye poeng til hver av dine eksisterende poeng.

Noen pseudokode:

estimate-latitude-longitude (x, y)

    numerator-latitude := 0
    numerator-longitude := 0
    denominator := 0

    for each point,
        deltaX := x - point.x
        deltaY := y - point.y
        distSq := deltaX * deltaX + deltaY * deltaY
        weight := 1 / distSq

        numerator-latitude += weight * point.latitude
        numerator-longitude += weight * point.longitude
        denominator += weight

    return (numerator-latitude / denominator, numerator-longitude / denominator)

Denne koden vil gi en relativt enkel tilnærming. Hvis du kan være mer presis om hvordan projeksjons forvrenger de geografiske koordinatene, kan du sannsynligvis gjøre mye bedre.

Svarte 05/08/2008 kl. 05:48
kilden bruker

stemmer
2

Ok. Fra et teoretisk synspunkt, gitt at forvrengningen er "tilfeldig", og noen løsning krever at du modellere denne vilkårlig forvrengning, du åpenbart ikke kan få et "svar". Imidlertid er noen løsning kommer til å involvere imponerende (vanligvis implisitt) noen modell av forvrengning som kan eller ikke kan gjenspeile virkeligheten av situasjonen.

Siden du ser ut til å være mest interessert i modeller som forutsetter en slags lokal kontinuitet i forvrengning kartlegging, er det mest opplagte valget den du allerede har prøvd: lineær interpolaton mellom nærmeste poeng. Går utover det som kommer til å kreve mer sofistikert matematisk og numerisk analyse kunnskap.

Du er feil, men i forutsatt at du ikke kan utvide dette til flere poeng. Du kan ved hjelp av en minste-squared error tilnærming. Finn den lineære svaret som minimerer feilen av de andre punktene. Dette er trolig den mest rett fram forlengelse. Med andre ord, ta de 5 nærmeste poeng og prøve å komme opp med en lineær tilnærming som minimerer feilen av disse punktene. Og bruke det. Jeg ville prøve dette neste.

Hvis det ikke fungerer, så forutsetningen om linearitet over området av N punkter er brutt. På dette punktet må du oppgradere til enten en kvadratisk eller kubisk modell. Regnestykket kommer til å bli hektisk på det tidspunktet.

Svarte 05/08/2008 kl. 15:47
kilden bruker

stemmer
0

Ummm. Kanskje jeg mangler noe om spørsmålet her, men hvis du har langt / lat info, har du også i retning av nord?

Det virker som du trenger for å kartlegge geodetisk koordinatene til et projisert koordinatsystem. For eksempel osgb til WGS84.

De involverte matematikk er ikke trivielt, men koden kommer ut en bare noen få linjer. Hvis jeg hadde mer tid jeg skulle legge mer, men jeg trenger en dusj så jeg vil være kjedelig og link til wikipedia oppføring som er ganske bra.

Merk: Post dusj redigert.

Svarte 05/08/2008 kl. 05:21
kilden bruker

stemmer
0

problemet er at kula kan bli forvrengt på en rekke måter, og har alle de punktene som er kjent på ekvator, kan si, vil ikke hjelpe deg å kartlegge punktene lenger unna.

Du trenger bedre 'nære' poeng, så kan du anta disse tre punktene er på et fly med den fjerde og gjøre interpole --knowing at avstanden fra lengdegrader er en funksjon, ikke en konstant.

Svarte 05/08/2008 kl. 05:20
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more