random-location-generator
Akimirksniu generuokite atsitiktines geografines koordinates. Nemokamas atsitiktinių vietų generatorius sukuria teisingus platumų ir ilgumų verčių duomenis su interaktyvia žemėlapiu. Idealus programėlių testavimui.
Atsitiktinės vietos generatorius
Dokumentacija
Atsitiktinės vietos generatorius – įrankis, generuojantis atsitiktinę geografinių koordinačių porą: platumą ir ilgumą. Kiekvienas rezultatas žymi tašką, kuris gali būti bet kur Žemės paviršiuje – atvirame vandenyne, miesto gatvėje ar kalno viršūnėje.
Ką generuoja įrankis
Kiekvienas spustelėjimas sugeneruoja vieną platumos reikšmę nuo -90° iki 90° ir vieną ilgumos reikšmę nuo -180° iki 180°. Įrankis abu skaičius rodo dešimtainiais laipsniais, pavyzdžiui, 60,0000° Š, 90,0000° V, ir pažymi tašką paprastame pasaulio žemėlapyje. Neigiama platuma reiškia, kad taškas yra į pietus nuo pusiaujo, o neigiama ilguma – kad jis yra į vakarus nuo nulinio meridiano, einančio per Grinvičą Jungtinėje Karalystėje.
Kaip naudoti atsitiktinės vietos generatorių
- Paspauskite mygtuką Generuoti.
- Perskaitykite po mygtuku rodomas koordinates su šiaurės / pietų ir rytų / vakarų kryptimis.
- Patikrinkite žymeklį pasaulio žemėlapyje, kad apytiksliai pamatytumėte, kur yra taškas.
- Paspauskite Kopijuoti, kad nukopijuotumėte koordinates ir galėtumėte jas naudoti kitur.
- Dar kartą paspauskite Generuoti, kad gautumėte naują tašką. Tai galima atlikti neribotą skaičių kartų.
- Paspauskite Nustatyti iš naujo, kad išvalytumėte rezultatą ir pradėtumėte iš naujo.
Kaip apskaičiuojamos koordinatės (formulė)
Ilguma yra paprasta: ji parenkama tolygiai, t. y. kiekviena reikšmė nuo -180° iki 180° turi vienodą tikimybę. Formulė:
čia λ yra ilguma laipsniais, o v – atsitiktinis skaičius nuo 0 iki 1.
Platuma veikia kitaip, ir būtent čia žmonės dažnai suklysta. Naudojama formulė:
čia φ yra platuma, perskaičiuota iš radianų į laipsnius, u – atskiras atsitiktinis skaičius nuo 0 iki 1, o arcsin yra atvirkštinė sinuso funkcija.
Kodėl platuma neparenkama naudojant paprastą atsitiktinį skaičių
Lygiagretė netoli ašigalių yra trumpa. Pusiaujo lygiagretė yra ilga ir juosia didžiąją planetos dalį. Jei platuma būtų parenkama naudojant paprastą atsitiktinį skaičių nuo -90 iki 90, kiekvienam platumos laipsniui tektų vienoda rezultatų dalis, nors poliarinės lygiagretės apima daug mažesnį Žemės paviršiaus plotą nei pusiaujo lygiagretė. Dėl to prie ašigalių susidarytų per daug taškų.
Arksinuso formulė šią problemą išsprendžia. Ji paskirsto taškus taip, kad kiekvienas Žemės paviršiaus plotelis turėtų vienodą tikimybę būti pasirinktas, nesvarbu, kaip arti ašigalio jis yra. Ši idėja vadinama taškų parinkimu sferoje ir išplaukia iš taisyklės, kartais vadinamos Archimedo kepurės dėžutės teorema: platumos juostos paviršiaus plotas priklauso nuo jos kraštų sinusų skirtumo, o ne nuo skirtumo laipsniais.
Pavyzdys su sprendimu
Tarkime, generatorius sugeneruoja du atsitiktinius skaičius: u = 0,9330127 platumai ir v = 0,25 ilgumai.
- platuma = arcsin(2 × 0,9330127 − 1) = arcsin(0,8660254) = 60°
- ilguma = 0,25 × 360 − 180 = -90°
Rezultatas yra 60,0000° Š, 90,0000° V – taškas netoli Hadsono įlankos šiaurinėje Kanadoje.
Kodo pavyzdys
Tie patys du žingsniai tinka bet kuriai programavimo kalbai: sugeneruokite du atsitiktinius skaičius nuo 0 iki 1, pirmajam pritaikykite arksinuso formulę, kad gautumėte platumą, o antrąjį perskaičiuokite, kad gautumėte ilgumą.
Python
1import random
2import math
3
4def generate_random_coordinates():
5 u = random.random()
6 v = random.random()
7 latitude = math.degrees(math.asin(2 * u - 1))
8 longitude = v * 360 - 180
9 return latitude, longitude
10JavaScript
1function generateRandomCoordinates() {
2 const u = Math.random();
3 const v = Math.random();
4 const latitude = Math.asin(2 * u - 1) * (180 / Math.PI);
5 const longitude = v * 360 - 180;
6 return { latitude, longitude };
7}
8Paprastesnę versiją, kurioje praleidžiamas arksinuso žingsnis ir platuma parenkama kaip random.uniform(-90, 90), parašyti lengviau, tačiau taškai susitelkia prie ašigalių, užuot tolygiai pasiskirstę Žemės paviršiuje.
Dažniausi naudojimo atvejai
Programinės įrangos kūrėjai atsitiktines koordinates naudoja GPS funkcijoms, žemėlapių atvaizdavimui ir vietove pagrįstoms programėlėms testuoti, nereikalaudami rankiniu būdu parinkti testinių duomenų. Žaidimų kūrėjai jas naudoja pradinėms vietoms arba lobių paieškos vietoms nustatyti. Mokytojai jas naudoja mokydami mokinius skaityti platumos ir ilgumos koordinates. Tyrėjai jas naudoja nešališkoms imties vietoms lauko tyrimuose parinkti, nes arksinuso metodas neleidžia teikti pirmenybės kuriam nors pasaulio regionui.
Dažnai užduodami klausimai
Kokio formato yra koordinatės?
Dešimtainiai laipsniai (DD), pavyzdžiui, 40,7128° Š, 74,0060° V. Tai formatas, kurį naudoja dauguma žemėlapių paslaugų, įskaitant „Google Maps“, ir GPS įrenginiai.
Kodėl tiek daug atsitiktinių koordinačių patenka į vandenyną?
Vanduo dengia apie 71 % Žemės paviršiaus, todėl tikrai atsitiktinis taškas greičiau pateks į vandenyną nei į sausumą. Tai tikėtina ir patvirtina, kad koordinatės paskirstomos tolygiai, o ne rodo įrankio trūkumą.
Ar galiu generuoti tik vienos šalies arba žemyno koordinates?
Ne. Šis įrankis parenka taškus bet kurioje Žemės vietoje. Norint apriboti rezultatus vienu regionu, po generavimo reikėtų papildomai filtruoti koordinates arba naudoti įrankį su teritorijos ribomis.
Kiek tikslios yra koordinatės?
Po kablelio kiekviena reikšmė turi 4 skaitmenis. Platumos atveju tai reiškia maždaug 11 metrų (36 pėdų) tikslumą bet kurioje Žemės vietoje. Ilgumos atveju tie patys 4 skaitmenys ties pusiauju apima maždaug 11 metrų, o artėjant prie ašigalių šis atstumas mažėja, nes ilgumos linijos ten suartėja.
Ar koordinatės nurodo tikras vietas pasaulyje?
Taip. Kiekvienas rezultatas yra matematiškai galiojantis taškas Žemės paviršiuje, nors jis gali būti atvirame vandenyne, lede ar kitoje vietoje, netoli kurios nėra gyvenviečių.
Kaip perskaičiuoti dešimtainius laipsnius į laipsnius, minutes ir sekundes (DMS)?
Sveikąją skaičiaus dalį laikykite laipsniais. Dešimtainę dalį padauginkite iš 60, kad gautumėte minutes. Gautos reikšmės dešimtainę dalį dar kartą padauginkite iš 60, kad gautumėte sekundes.