Viac

Vytvorte kruhy pomocou vzorca


Robím projekt pre telekomunikačnú spoločnosť. Musím vykresliť kruhy na mape (za predpokladu, že stred kruhu je veža a kruh ako oblasť pokrytá týmto signálom), používam základné vrstvy ako Mapy Google, mapy Yahoo (Spherical Mercator), takže som použil CreateGeodesicPolygon () úspešne vytvoriť kruhy načítaním hodnôt z databázy DB.

Pretože musím vykresliť veľa kruhov, prinútilo ma to prejsť na geoserver. Pretože údaje poskytuje telekomunikačná spoločnosť, poskytujú hodnoty Lat, Lon, Gt, Gr, Pt, Pr, lambda (myslím, že ich význam je tu irelevantný). Tieto hodnoty sú uložené v databáze tak, ako sú. Teraz by ste mali použiť rovnicu (prenosová rovnica FRIIS) a nahradiť hodnoty každého radu (veže), aby ste našli vzdialenosť pokrytú vežou. Potom musím vytvoriť kruhy s touto vzdialenosťou (považuje sa za polomer) a lon/lat a vykresliť ich. na mape pomocou geoservera.

Navrhnite mi nejaké nápady, ako vykonávať túto úlohu ... Bol by som vďačný za vaše vedenie


Moja predstava je použiť tieto kroky, akonáhle získam vzdialenosť od rovnice. Bude to fungovať ???

VYTVORIŤ TABUĽKU kruhy (cid int4, point_circle st_geometry); VLOŽIŤ DO KROVOV HODNOTY (1, ST_BUFFER (ST_GeomFromText ('POINT (lon lat)', SRID), radius, 'quad-segs = 8'));

Vytvorte obchod POSTGIS v geoserveri a táto tabuľka kruhov bude tvorená vrstvou.


Použitím EPSG: 4326 budete pufrovať v stupňoch, EPSG: 900913 vám umožní ukladať do vyrovnávacej pamäte v metroch. Google Mercator nevedie k správnemu meraniu dĺžky, ale ak chcete mať len približný pocit zo svojich údajov, mali by ste byť v poriadku.

V projekcii Google Mercator sa tým vytvorí zobrazenie obsahujúce kruhy:

VYTVORIŤ ZOBRAZIŤ kruhy AKO VYBRAŤ tower_id, ST_BUFFER (ST_Transform (ST_SetSRID (ST_MakePoint (lon, lat), 4326), 900913, radius) AS tower_circle Z veží;

Pozrite sa na tento blogový príspevok http://geo-solutions.blogspot.com/2010/11/fun-stuff-computing-circular-buffers-in.html, ktorý pojednáva o použití služby WPS v programe GeoServer na vytváranie kruhov. Ukazuje tiež, prečo to, čo sa pokúšate urobiť, pravdepodobne neprinesie výsledky, ktoré očakávate na veľké vzdialenosti.


Môžete to urobiť pomocou JavaScriptu, ak chcete a nechať sa o to postarať klientskym prehliadačom: Kód môžete otestovať na tomto webe: http://jsfiddle.net/NtuEv/

V zásade má funkcia tri argumenty: zemepisnú šírku, dĺžku a polomer. Vráti súradnice, ktoré tvoria kruh.

Môžete hrať s nasledujúcim riadkom kódu a vygenerovať súradnice, či sa vám to páči, buď linestring, alebo čokoľvek:

odpoveď + = lon_rad.toDeg () + "," + lat_rad.toDeg () + ", 0";

Kód JavaScript:

var divElement = $ ('div#info'); // rozšírenie objektu Number o metódy na prevod stupňov/radiánov/** prevod číselných stupňov na radiány*/if (typeof (String.prototype.toRad) === "undefined") {Number.prototype.toRad = function () { vrátiť toto * Math.PI / 180; }} / ** Previesť radiány na číselné (podpísané) stupne * / if (typeof (String.prototype.toDeg) === "undefined") {Number.prototype.toDeg = function () {return this * 180 / Math. PI; }} funkcia fmod (X, Y) {návrat X % Y; } funkcia GetCircleCoordinates (lat, lng, radius) {var response = ""; var rLat = lat.toRad (); var rLon = lng.toRad (); var d_rad = polomer / 6378137; pre (i = 0; i <= 360; i ++) {var radiálne = i.toRad (); var lat_rad = Math.asin (Math.sin (rLat) * Math.cos (d_rad) + Math.cos (rLat) * Math.sin (d_rad) * Math.cos (radiálne)); var dlon_rad = Math.atan2 (Math.sin (radiálne) * Math.sin (d_rad) * Math.cos (rLat), Math.cos (d_rad) - Math.sin (rLat) * Math.sin (lat_rad)); var lon_rad = fmod ((rLon + dlon_rad + Math.PI), 2 * Math.PI) - Math.PI; odpoveď + = lon_rad.toDeg () + "," + lat_rad.toDeg () + ", 0"; } vrátiť odpoveď; } var circlecoords = GetCircleCoordinates (22.26, -73,34, 1100); divElement.html (kruhové súradnice);

UPRAVIŤ #1: Aktualizovaný odkaz jsfiddle ... bolo to nesprávne, je to: http://jsfiddle.net/NtuEv/


Znamená to, že ste v aplikácii Alexa nezapli funkciu & quothands free & quot. Namiesto toho, aby ste sa rozprávali s Alexou, budete musieť najskôr dlho stlačiť tlačidlo domov, aby vás počúvala.

Kruh s lomítkom znamená, že ste klepli na tlačidlo hlasitosti a potom vybrali možnosť „Žiadny“. To znamená, že ste v tichom režime. V niektorých zariadeniach je to aj vtedy, keď neexistuje žiadna mobilná sieť.

Môžete to zapnúť a vypnúť na paneli s upozorneniami.

Keď je tento znak (kruh s čiarou), znamená to, že Alexa nefunguje, prejdite na nastavenia a aktivujte Alexu a zmizne. Poznámka:- toto je na tablete Kindle Fire.


Obsah

Nechajte stredový uhol θ medzi akýmikoľvek dvoma bodmi na guli buď:

  • d je vzdialenosť medzi dvoma bodmi pozdĺž veľkého kruhu gule (pozri sférickú vzdialenosť),
  • r je polomer gule.

The haversínový vzorec umožňuje haversine z θ (to znamená, žeθ)), ktoré sa majú vypočítať priamo zo zemepisnej šírky (reprezentovaná symbolom φ ) a zemepisná dĺžka (vyjadrená symbolom λ ) dvoch bodov:

hav ⁡ (θ) = hav ⁡ (φ 2 - φ 1) + cos ⁡ (φ 1) cos ⁡ (φ 2) hav ⁡ (λ 2 - λ 1) < Displaystyle meno operátora left ( theta right) = operatorname left ( varphi _ <2>- varphi _ <1> right)+ cos left ( varphi _ <1> right) cos left ( varphi _ <2> right) operatorname left ( lambda _ <2>- lambda _ <1> right)>

  • φ1 , φ2 sú zemepisná šírka bodu 1 a šírka bodu 2 (v radiánoch),
  • λ1 , λ2 sú zemepisná dĺžka bodu 1 a dĺžka bodu 2 (v radiánoch).

Nakoniec funkcia haversine má (θ), aplikované vyššie na stredový uhol θ a rozdiely v zemepisnej šírke a dĺžke, je

Funkcia haversine počíta polovicu versínu uhla θ .

Vyriešiť na vzdialenosť d , aplikujte archaversín (inverzný haversín) na h = hav (θ) alebo použite funkciu arcsine (inverzný sínus):

d = r archav ⁡ (h) = 2 r arcsin ⁡ (h) < displaystyle d = r meno operátora (h) = 2r arcsin vľavo (< sqrt > vpravo)>

d = 2 r arcsin ⁡ (hav ⁡ (φ 2 - φ 1) + cos ⁡ (φ 1) cos ⁡ (φ 2) hav ⁡ (λ 2 - λ 1)) = 2 r arcsin ⁡ (sin 2 ⁡ (φ 2 - φ 1 2) + cos ⁡ (φ 1) cos ⁡ (φ 2) hriech 2 ⁡ (λ 2 - λ 1 2)) < Displaystyle < begind & amp = 2r arcsin vľavo (< sqrt < meno operátora ( varphi _ <2>- varphi _ <1>)+ cos ( varphi _ <1>) cos ( varphi _ <2>) operatorname ( lambda _ <2>- lambda _ <1>) >> right) & amp = 2r arcsin left (< sqrt < sin ^<2> left (< frac < varphi _ <2>- varphi _ <1>> <2>> vpravo)+ cos ( varphi _ <1>) cos ( varphi _ <2>) sin ^<2> vľavo (< frac < lambda _ <2>- lambda _ <1>> <2>> vpravo) >> vpravo) koniec>> [9]


Pri použití týchto vzorcov to musí človek zaistiť h nepresahuje 1 kvôli chybe s pohyblivou rádovou čiarkou ( d je skutočný iba pre 0 ≤ h ≤ 1 ). h pristupuje len k 1 pre antipodálny body (na opačných stranách gule) - v tejto oblasti vo vzorci pri použití konečnej presnosti spravidla vznikajú relatívne veľké numerické chyby. Pretože d je potom veľký (blíži sa πR. (polovičný obvod)) malá chyba často nie je v tomto neobvyklom prípade veľkým problémom (aj keď existujú aj iné vzorce vzdialenosti medzi veľkými kruhmi, ktoré sa tomuto problému vyhýbajú). (Vyššie uvedený vzorec je niekedy napísaný pomocou arktangentovej funkcie, ale trpí podobnými numerickými problémami v blízkosti h = 1 .)

Každý vzorec je iba aproximáciou, keď sa aplikuje na Zem, čo nie je dokonalá guľa: „polomer Zeme“ R. sa pohybuje od 6356,752 km na póloch do 6378,137 km na rovníku. Ešte dôležitejšie je, že polomer zakrivenia severo-južnej čiary na zemskom povrchu je o 1% väčší na póloch (≈6399,594 km) ako na rovníku (≈6335,439 km)-takže haversínový vzorec a zákon kosínov nemožno zaručiť správne na lepšie ako 0,5%. [ potrebná citácia ] Presnejšie metódy, ktoré berú do úvahy elipticitu Zeme, poskytujú Vincentyho vzorce a ostatné vzorce v článku o geografickej vzdialenosti.

Vzhľadom na jednotkovú sféru je „trojuholník“ na povrchu gule definovaný veľkými kruhmi spájajúcimi tri body u , v a w na sfére. Ak sú dĺžky týchto troch strán a (od u do v ), b (od u do w ) a c (od v do w ) a uhol opačného rohu c je C. potom zákon haversín uvádza: [10]

hav ⁡ (c) = hav ⁡ (a - b) + sin ⁡ (a) sin ⁡ (b) hav ⁡ (C). < displaystyle operatorname (c) = meno operátora (a-b)+ sin (a) sin (b) meno operátora (C).>

Pretože ide o jednotkovú sféru, dĺžky a , b a c sa jednoducho rovnajú uhlom (v radiánoch), ktoré tieto strany zvierajú od stredu gule (v prípade nejednotnej gule sa každá z týchto dĺžok oblúka rovná strednému uhlu vynásobenému polomerom R. sféry).

Aby sme odvodili zákon haversín, začneme sférickým kosínovým zákonom:

cos ⁡ (c) = cos ⁡ (a) cos ⁡ (b) + sin ⁡ (a) sin ⁡ (b) cos ⁡ (C).

Ako bolo uvedené vyššie, tento vzorec je podmieneným spôsobom riešenia pre c kedy c je malé. Namiesto toho nahradíme identitu, ktorá cos (θ) = 1 - 2 hav (θ) a tiež použiť dodatočnú identitu cos (ab) = cos (a) cos (b) + hriech (a) hriech (b), získať zákon haversines, vyššie.


Zabaľovanie vecí s Bartom

Potom extrahujeme obrys a pomocou FindShortestTour zoradíme body tak, aby ich spojenie poskytlo rozumný obraz:

Oči alebo nie veľmi dobré, ale nie je veľa čo robiť: musíme zapracovať na a slobodný zatvorené krivka. Tu majú body viac ako 1 500 bodov: to sa dá výrazne zlepšiť! Ale to nechám na guruov.

Potom môžeme predchádzajúce príkazy zabaliť do funkcie, ktorá vráti zoznam bodov a kruhov:

S 300 režimami (601 kruhov):

Krivku je možné vykresliť pomocou parametrického diagramu [Vyhodnotiť@p [t] [[-1]], ] .


Dlhé čakanie sa predlžuje

Tim Wolfe si myslel, že je ďalším v poradí na obličku, ale jeho lekár mu povedal, že kvôli zmene politiky to môže trvať ďalších štyri až päť rokov. Štyridsaťjedenročný obyvateľ Vermontu naň už čakal takmer štyri roky.

"Bola to dosť veľká rana," povedal Wolfe, ktorý musí začať dialýzu, pokiaľ nenájde živého darcu. Každý rok, keď je pacient na dialýze, jeho pravdepodobnosť úmrtia sa zvyšuje o 7%.

Wolfeov lekár Michael Chobanian, programový a lekársky riaditeľ transplantácie solídnych orgánov v Dartmouth-Hitchcock Medical Center v New Hampshire, uviedol, že jeho zariadenie získava menej orgánov na transplantácie, pretože zmena politiky rozšírila skupinu darcov a zvýšila konkurenciu. Orgány darcov v regióne New Hampshire sa teraz dostávajú k jednotlivcom v transplantačných centrách mimo štátu, ktoré majú na čakacej listine viac ľudí. Tieto orgány by neboli ľuďom ponúknuté podľa starej politiky.

"Odpoveď nie je odobrať orgány z iných miest," povedal. "V tomto novom systéme existuje skutočné nebezpečenstvo, že ak orgány cestujú príliš ďaleko, mnohé z nich nemusia fungovať." Čím dlhšie je orgán mimo tela a v ľadovej truhle bez kyslíka alebo krvi, je šanca, že sa neobnoví. “

Wolfe ani Dartmouth-Hitchcock Medical Center nie sú súčasťou súdneho sporu.

UNOS hovorí, že nie je dostatok orgánov na obchádzanie.

"Ako národná sieť máme za úlohu prísť s politikou, ktorá slúži všetkým pacientom na celoštátnej úrovni a ktorá sa skutočne snaží, aby šance každého jednotlivého kandidáta na transplantáciu boli čo najrovnomernejšie s ďalšou osobou," “Povedal Newman.


2 odpovede 2

Existuje množstvo funkcií regiónu, ktoré sa objavili v 10. Toto používa funkciu RegionDistance [] na vytvorenie funkcie, ktorá vypočíta najkratšiu vzdialenosť z bodu do regiónu. Generovaná funkcia beží rýchlejšie, než len kontrola všetkých kruhov. Aj keď sa tvorba funkcie musí v prvom rade pozrieť na všetky kruhy. Takže to stále beží v $ mathrm O (n^2) $ čase, ale aspoň vnútorný While by mal byť rýchlejší, keď už je veľa kruhov a nie je veľa miest na vloženie nového.

Nasledujúce beží o niečo rýchlejšie, generuje funkciu Nearest pre veľkú skupinu kruhov a pomocou tejto jednej funkcie eliminuje mnoho prekrývaní v rámci jedného priechodu.

Meranie výkonu (počet najazdených kilometrov sa môže líšiť):

Problémom oboch týchto algoritmov je, že neexistuje žiadna záruka, že sa zastavia. Môžete požiadať o príliš veľa kruhov a skončiť tak, že sa slučky Kým sa budú snažiť kruhy pridávať navždy, keď nie je kam dať ani jeden. Ak to má byť súčasťou nejakého väčšieho automatizovaného procesu, potom musíte pridať kontrolu, či po toľkých pokusoch nedochádza k pokroku, aby ste to mohli vzdať. Napr .:

Ako zdôraznil Ernst Stelzer, v 3D to funguje rovnako dobre s dvoma malými zmenami:

Ukázal by som vám jeden zo štyroch rozmerov, okrem toho, že neexistuje HyperSphere [] ani Graphics4D []. Niekto by na nich mohol zapracovať.

A teraz niečo úplne iné. @novice nepožadovala, aby boli kruhy umiestnené náhodne, ale aby boli kruhy distribuované „rovnomerne“. Môžete získať viac kruhov, ak nie sú umiestnené náhodne. Tento šesťuholník sa balí do polomeru čo najväčšieho počtu kruhov r, a potom náhodne odstráni nadbytočné kruhy:

Je veľmi nepravdepodobné, že by ste tam náhodne vložili 40 kruhov s polomerom 0,15.


Techniky škálovania

Pravdepodobne najdôležitejšou súčasťou proporčných symbolových máp je technika škálovania používaná na reprezentáciu údajov. Napriek tomu, že v rámci určitej diskusie existujú tri najbežnejšie typy škálovania, absolútne škálovanie, škálovanie zdanlivého rozsahu a stupňovanie. [5] Zmena mierky je dôležitá pre zabezpečenie čitateľnosti mapy, pretože čitateľovi umožní odhadnúť hodnotu symbolu.

Absolútne škálovanie

Vďaka tejto metóde každý symbol úmerne použije svoju údajovú hodnotu na stupnici, ktorá sa používa. Ak sa napríklad kruhy používajú na reprezentáciu HDP na globálnej mape, krajina s hodnotou 58 by mala kruh s dvojnásobkom rozlohy ako krajina s hodnotou 29.

Ak sa používajú kruhy, veľkosti všetkých symbolov sa vypočítajú na základe zvolenej veľkosti pre ktorýkoľvek zo symbolov. Povedzme, že kartograf sa rozhodne, že je to hodnota v0 bude mať kruh s polomerom r0. Potom pre akúkoľvek inú hodnotu v, polomer r je určené nastavením oblastí priamo úmerne k hodnotám:

v / v0 = a / a0 = πr 2 / πr0 2

To sa potom dá vyriešiť za r:

r = r0 (v / v0) 0.5

Zmena mierky zdanlivej veľkosti (Flannery)

Škálovanie zdanlivej veľkosti je technika používaná na kompenzáciu ľudskej chyby pri interpretácii stupnice. Hoci odhadovanie dĺžky nie je problém, ľudia majú tendenciu podceňovať oblasti a objemy predmetov. Pri vytváraní proporcionálnej symbolovej mapy by napríklad kartograf použil kruh s rozlohou 2 štvorcové cm na zobrazenie 100 ľudí a kruh s rozlohou 4 štvorcové cm na zobrazenie 200 ľudí. Druhý kruh má presne dvojnásobnú plochu ako prvý, čo predstavuje presne dvojnásobné množstvo ľudí. Štúdie zistili, že druhý kruh bude vyzerať menej ako dvakrát väčší ako pôvodný kruh, čo vedie k interpretačnej chybe. Mierna zmena veľkosti zohľadňuje túto prirodzenú chybu zvýšením rozdielu plochy o viac ako proporcionálne množstvo. [6]

Rozsahové triedenie

Táto metóda klasifikuje údaje, ktoré sú reprezentované, do rôznych skupín alebo tried. Tieto skupiny budú rozsahom hodnôt a všetky prípady, ktoré majú hodnoty v rámci daného rozsahu, budú mať všetky symbol rovnakej veľkosti. Rozsahové triedenie relatívne uľahčuje priradenie symbolu k jeho proporcionálnym hodnotám.


V tejto výplni je stredový vrchol, ktorý je spojený so všetkými ostatnými vonkajšími vrcholmi.

K tomuto typu výplne môžete v prípade potreby jednoducho pridať kruhové slučky a pridať tak väčšiu geometriu.

Môžete ho manuálne modelovať tak, že vyberiete všetky vrcholy v režime úprav pomocou písmena A, vyplníte ho zvyčajne písmenom F a prejdete na Face & gt Poke Faces ALEBO ho vyberiete z rozbaľovacej ponuky.

Výber medzi týmito dvoma náplňami závisí od toho, kedy a kde ju použijete.


Syntax

Trieda funkcií, pre ktorú sa vypočíta priemerný stred.

Trieda bodových prvkov, ktorá bude obsahovať prvky predstavujúce stredné stredy triedy vstupných prvkov.

Číselné pole použité na vytvorenie váženého stredného stredu.

Pole používané na zoskupenie prvkov na samostatné výpočty stredného stredu. Pole prípadu môže byť celočíselné, dátumové alebo reťazcové.

Číselné pole obsahujúce hodnoty atribútov, z ktorých sa vypočíta priemerná hodnota.