Rakennustekninen aikakauslehti
Rakennustekninen Maplight: Kuvakoordinaatit maakäyttöön
Tässä on määrätty pipeline, joka kvantifioi näytteitä, yhdistää offline laitteita, mitata maata kerran ja säilyttää yksityisen lähteiden historian palvelimelta.
Tulo-asiakysymys Maplightille
Käyty-maailman kartta vastaa hyödylliseen kysymykseen: onko paikka osa historiaasi? Maplight kysyy jotain muuta. Annetaan vuosien aikana otetuista paikallisia kuvia ja muuta matkailun todistusaineistoa, mitkä maan osat ovat saaneet nämä hetket?
Tämä kuulostaa kuin piirrettäisiin läpinäkyisiä ympyröitä pisteiden ympärille. Tuotantovaiheen ominaisuus on ratkaista vaikeampia ongelmia: pisteet päällekkäin, ympyrät rikkovat rajoja ja rajoja, Maa on kaareva, lähtödata tulee useista järjestelmistä, vanhat laitteet saattavat olla offline, ja elinikäinen kirjasto on nopea tarvittaessa interaktiivisesti katsellaan.
Maplightin toteutus jakaa nämä huollot pieneksi siirrettävän alkuperämalliksi, deterministisen kattavuuden moottoriksi ja renderöintikerroksiksi. Samat syötteet tulisi tuottaa saman kattavuuden, olivatko tiedot luotu yhdellä laitteella vai yhdistetty iCloud:n kautta usealla.
Yleistä tietoa ennen tallennusta
Alkuperäinen syöte voi alkaa fotosta, tuoduista matkasta, passin merkistä tai manuaalisesti kirjattuun paikkaan. Ennen kuin Mapsaken alkuperäinen sijainti tallennetaan, Mapsake pyöristää sen leveys- ja pituusasteet kuusikirjaimiseen geohash-soluun. Tallennettu alkuperäinen sisältää tämän geohashin, bitmaskin, joka kuvaa osallistuvia lähteitä, ja ensimmäisen tunnetun päivän.
Tämä tarjoaa kolme hyödyllistä ominaisuutta.
Ensimmäisenä, toistuvat todisteet samassa pienessä geografisessa solussa voivat yhdistyä yhdeksi alkuperäksi. Toiseksi, porttikirjanpito on tiivis ja deterministinen. Kolmanneksi, Maplight -malli ei tarvitse säilyttää kaikkia alkuperäisiä kuvakirjojen koordinaatteja, jotta saadaan valaistus takaisin.
Ensimmäinen päivä vahvistaa Historia-näkymän. Lähteet ilman päivämääriä lasketaan vielä kaikkien aikojen tulokseen, mutta ne eivät pääse väittämään kuuluvansa vuoteen, jota sovellus ei voi määrittää.

Tehdä yhdistäminen lisätyksi
iCloud-synkronointi ei ole yksittäinen järjestetty virta. Kaksi laitetta voi toimia offline, kirjoittaa liittyviä tietueita ja myöhemmin saada duplikaatit eri järjestyksessä. Viimeisin kirjoittaja voittaa Maplight-palvelu ei teisi legitiminen historia hävitä.
Sijaishan alkuperät yhdistyvät geohashin perusteella. Lähteet merkitsevät ja ensimmäinen päivä, joka on voimassa, voittaa. Alkuperät koodataan järjestettyjen pienikappaleiden sisällä. Loginen pienikappale tunnistetaan profiilin, generoinnin ja geografisen kuvion perusteella, kun taas yhdistäminen kaksinkertaistaa pienikappaleiden sisällön.
Generaatioiden tunniste on tärkeä, kun rakennetaan uudelleen. Uuden tulostuksen voi valmistaa ilman, että vanhojen generaation epäaktiiviset osat käsitellään nykyisinä. Tämä estää osittaisen synkronoinnin tai keskeytetyn laskelman tuottamasta vanhojen ja uusien kattavuuden sekoitusta.
Yhdistämisääntö on tarkoituksellisesti monotoninen: yhdistä näytteet. Monotoniset, deterministiset säännöt ovat arvokkaita, kun sama yksityinen historia on pakotettava yhdistämään iPhone, iPad ja Mac välillä.
Kattavuus mitataan yhtä suuren verkkosivun avulla
Latitudi ja longitudin asteet eivät edustakaan yhtä pitkiä etäisyyksiä kaikkialla. Yksi longitudin aste kutistuu päiväntasaajan läheisyydessä, joten tavallisen karttapixelin tai asteen kokoisen solun laskeminen vääristäisi tulosta sijainnin mukaan.
Maplight arvioi maan peittävyyttä noin kahden kilometrin yhtäsuuren pinta-alan ruudukolla. Jokainen rivi edustaa vertailukelpoista fysikaalista aluetta, ja valaistut alueet tallennetaan väliaikaisina väleinä tämän rivin yli. Lähteestä tuleva säde muodostaa kandidaatteja soluihin; nämä solut testataan ja kerätään.
Välit tekevät ylittämisen halvaksi. Jos useita lähekkäisiä kuvia valaivat samat solut, laite yhdistää suoritukset sen sijaan, että laskee maata useasti. Lopullinen luku edustaa valaistun maan yhdistettä, ei jokaisen ympyrän summaa.
Tämä on myös syy, miksi kattovuuden luku ei välttämättä vastaa matemaattisten ympyröiden pinta-alan kertoluvulla lähdeiden määrästä. Merikäytävät poistetaan, yläosat sulkeutuvat ja rajan oikeudet jakavat tuloksen useampaan maitoon.
Pidä meri kokonaan pois
Lento- tai rannikkokuvassa voidaan asettaa säde veden päälle. Maplightia kuvataan valaistuna maana, joten vesi ei voi epäsuorasti kasvattaa lukua.
Kattovuusmoottori käyttää pakattuja rajatietoja määrittääksesi, ovatko kandidaatit selkeästi maalla ja mikä maa sisältää niitä. Samalla laajempi lähteeksi perustuva perhe, joka tukee Mapsaken offline-maapalloa ja gazetteeria, tekee laskelman saataville ilman, että joka ajan koordinaatit lähetetään verkkokarttapalveluun.
Rannat ovat luontaisesti monimutkaisempia kuin sisämaan pisteet. Saarit, kapeat pohjoispuoliset, enklavat ja kiisteltyjen rajat ovat kaikki reunatapauksia. Syytä siis käsitellä kattavuus arvioina sen tarkkuuskerroksen mukaisesti, ei kunnallisella karttapohjaisella tarkastuksella.
Laiteominaisuuden kattavuus ilman kaksinkertaista laskentaa
Maan kokonaisuudet perustuvat samiin kattavisiin soluihin kuin globaali kokonaisuus. Solu voidaan määritellä rajan sisällä, kun taas globaali yhdiste lasketaan vain kerran. Tämä säilyttää maan jakamisen selkeänä ja estää rajan viereisen lähteestä luomaan enemmän maata kuin kartta todella kattaa.
Lähtöjen jakaminen on erillinen alueiden oikeudenjakoa. Geohash-lähtö voi muistaa, että sekä kuvat että manuaalisesti valittu paikka ovat osallisia, mutta valaistujen solmien ympärillä yhdistetyssä lähtössä kuuluvat yhä yhteen yhdistykseen. Tämä ero mahdollistaa rajapinnan selkeyttämisen siitä, mistä näytteen pohjana oli, ilman että ylittävät näytteet muuttuvat duplikaattikansoiksi.
Rakenna ajankäytön ajalta valokuvista
Historia tarvitsee vastata “miten Maplight näytti tällä vuosella?” Käyttämällä joka vuosi uudelleen laskemalla joka liukusäätä siirrossa vähentää akkua ja tekee animaation hengähtämään.
Malli tallentaa vuoden näkymät, jotka liittyvät nykyiseen sukupolveen ja säde. Jokainen näky representaatiivinen alkuperät, joiden aikaisin päivä on enintään sen leikkauspisteen ennen. Päivämäärätön alkuperä säilyy kaikkia aikaa näkymässä ilman, että se lisätään fiktioitua historiallista vuotta.
Sovelluksen rakenne voi sitten kulkea valmiin kokonaisten ja geometrian kautta, kun taas kartan vastaus pysyy välitöntä. Uudelleenluonti tapahtuu, kun alapohjan alkuperäinen joukko, valittu säde tai generointi muuttuu, mutta tavallinen toisto lukee vakain järjestyksessä.
Renderöidään hanka sijasta tuhansia ympyröitä
Käyttäjä näkee valoa, ei ruudukon soluja. Piirroskerros muuntaa laskettua kattavuutta overlayiksi, joka voi liikkua ja zoomata atlasin kanssa. Koko maailman käsittelyä yhtenä suureksi korkearesoluutioksi tekstiksi käyttäisi liikaa muistia; piirtää kaikki alkuperät itsenäisenä elävänä muodona toistaisi yläpinnan toistuvasti jokaisella kehyksellä.
Maplight pitää siis kallista geografista yhdistettä ulkopuolella silmukassa ja piirtää valmiita kattavia osia. Overlay voi keskittyä esittelyyn – väritys, läpinäkyvyys, zoom ja siirtymät – kun taas kattovirta omistaa geografisen vastauksen.
Tämä rajapinta auttaa myös testauksessa. Kattava näkymä voidaan tarkastella ilman SwiftUI-näkymää, ja renderöinti voidaan säätää ilman merge-merkityksen muutosta.
Yksityisyys muotoili rakennelman
Se olisi helpompaa lähettää kuvien koordinaatit palvelimelle ja laskea kattavuus siellä. Mapsake ei tarkoita, että tämä rakente on pakollinen. Quantization tapahtuu ennen Maplight-persistenssia, kattavuus voidaan rakentaa laitteeseen pakattujen maapinta-geometrioiden avulla ja julkisen jakamisen tuloksena on yleistetty tulos eikä yksityinen alkuperäinen keräys.
Tämä valinta siirtää työn käyttäjän laitteisiin ja tekee synkronointisuunnittelusta vaativamman. Se tarkoittaa myös, että järjestelmä voi pysyä hyödyllisenä verkkoon liittymättä, verkkosivusto ei muuttu kadun päätepisteenä henkilökohtaisille kuvien sijainneille, ja poistaminen tai vienti tietoja pysyy yhteydessä käyttäjän Mapsake-tiliin.

Mitä opimme
Pääsääntöisesti jokainen kerros vastaa yhtä tarkkaa kysymystä:
- Alkuperät vastaavat, mikä yleistetty näyttö on olemassa ja milloin se ensimmäisen kerran ilmestyi.
- Yhdistämisäännöt selkevät, miten useita laitteita yhdistetään ilman, että lisäykset menettävät.
- Kattavuus vastaa, mitkä yhtä suuria maapalloa ovat valaistuja.
- Näytöt kertovat, miten se yhdistelmä muuttuu ajan myötä.
- Renderöinti selittää, miten tuloksena saatu tuntunee eloisalta.
Maplight näyttää pelokkaalta, koska alustalla oleva mekaniikka on tarkoituksellisesti rajoitettu. Pienet syötteet, yhteenlaskettu synkronointi, yhtäsuuruusala- mittaus, välin yhdistelmät, pakattu rajat ja valmiit näytöt jättävät käyttöliittymän vapaiseksi tehdä tunteellista osaa: antaaksesi jonkun seurata elämää kuvien valaistuksella kartalla.