Küsimus:
Kuidas saab teisendada Lat / Long'ist Grid Square'iks?
PearsonArtPhoto
2013-10-23 17:24:05 UTC
view on stackexchange narkive permalink

Ma näen, et paljud võistlused, auhinnad ja muud esemed kasutavad ruudustiku ruutu, et tuvastada nende asukoht. Kuidas saab aru saada, milline on tema ruudustik ruutu / pikkust arvestades?

Kas otsite algoritmi või rakendust?
Algoritm tõesti, kuid rakendus võib olla kasulik teistele seal asuvatele inimestele.
Kolmteist vastused:
#1
+25
PearsonArtPhoto
2013-10-23 17:42:51 UTC
view on stackexchange narkive permalink

Kõigepealt, kui te ei soovi matemaatikat teha, siis vaadake ruudustiku ruutkaarti, näiteks see üks.

Seal on suurepärane protsess aadressil sellel lehel ja lisaressursid saidilt ARRL. Põhimõtteliselt sisaldavad ruudustiku ruudud 3 paari, esimest ja viimast tähte ning keskmist numbrit. Pikkuskraad on iga paari jaoks alati esimene, millele järgneb laiuskraad. Oletame lihtsuse mõttes, et läänes ja lõunas on negatiivne pikk / pikk, nagu on tavaline konventsioon. Näiteks kavatsen kasutada 32,123 W, 14 321 N. Peamine on teha järgmist. :

Pikkuskraad

    > Lisage pikkuskraadile 180, võtke täisarv väärtus / 20 ja lisage üks. Seejärel mõelge välja, milline tähestik vastab, tavaliselt kirjutatakse suurtähega. Näide on 147.877 / 20 = 7. Ühe lisamisel saadakse tähestiku 8. täht ehk H. Märkus 7.877 on alles.
  1. Võtke järelejäänud osa ja jagage kahega, ümardades allapoole. See on number, teisendamist pole vaja. Näites antakse väärtus 3. Märkus 1.877 on alles.
  2. Võtke järelejäänud osa, korrutage 12-ga ja lisage üks. Ümardage lähima täisarvuni. See on tähestiku täht, mis on tavaliselt kirjutatud väikeste tähtedega. Näites antakse väärtus 22 + 1 = 23. See on täht w.

Laiuskraad

  1. Lisage pikkuskraadile 90 ja võtke täisarv väärtus / 10, ja lisage üks. Seejärel mõelge välja, milline tähestik vastab, tavaliselt kirjutatakse suurtähega. Näide on 104,321 / 10 = 10. Ühe lisamisel saate tähestiku 11. tähe ehk K. Märkus 4.321 on alles.
  2. Võtke järelejäänud osa ja ümardage allapoole. See on number, teisendamist pole vaja. Näites antakse väärtus 4. Märkus 0.321 on alles.
  3. Võtke järelejäänud osa, korrutage 24-ga ja lisage üks. Ümardage lähima täisarvuni. See on tähestiku täht, mis on tavaliselt kirjutatud väikeste tähtedega. Näites antakse väärtus 7 + 1 = 8. See saab olema h-täht.

Nende paaride kaupa kokku panemine ja esimese pikkuskraadi ning seejärel laiuskraadi vaheldumine annab võrgu ruuduks 32,123 W, 14,321 N - HK34wh.

#2
+7
Walter Underwood K6WRU
2013-10-23 22:04:57 UTC
view on stackexchange narkive permalink

Kui soovite seda ise teha, võite kasutada seda minu kirjutatud Pythoni programmi.

  # - * - coding: utf-8 - * - import sys # Teisenda laiuskraad ja pikkuskraad Maidenheadi ruudustiku lokaatoriteni. ## Argumendid on märgitud kümnend- ja pikkuskraadides. Näiteks # minu QTH asukoht Palo Alto, CA on: 37.429167, -122.138056 või # kraadides, minutites ja sekundites: 37 ° 24 '49 "N 122 ° 6' 26" Wupper = 'ABCDEFGHIJKLMNOPQRSTUVWX'lower =' abcdefghijklmnopqrstuvwx'def_grid (dec_lat, dec_lon): kui ei (-180< = dec_lon<180): sys.stderr.write ('pikkuskraad peab olema -180< = lon<180, antud% f \' mitte (-90< = dec_lat<90): sys.stderr.write ('laiuskraad peab olema -90< = lat<90, antud% f \ n'% dec_lat) sys.exit (33) # ei saa põhjapoolusega hakkama, vabandust, [AR ] adj_lat = dec_lat + 90,0 adj_lon = dec_lon + 180,0 grid_lat_sq = ülemine [int (adj_lat / 10)]; grid_lon_sq = ülemine [int (adj_lon / 20)]; grid_lat_field = str (int (adj_lat% 10)) grid_lon_field = str (int ((adj_lon / 2)% 10)) adj_lat_remainder = (adj_lat - int (adj_lat)) * 60 adj_lon_remainder = ((adj_lon) - int (adj_lon / 2 ) * 2) * 60 grid_lat_subsq = madalam [int (adj_lat_remainder / 2.5)] grid_lon_subsq = madalam [int (adj_lon_remainder / 5)] return grid_lon_sq + grid_lat_sq + grid_lon_field + grid_lat_field + grid_lon_subsq +) argumendid, kümnend- ja pikkuskraad. ' print 'Näide Newingtoni, Connecticuti osariigist (W1AW):' print 'python maidenhead.py 41.714775 -72.727260' print 'tagastab: FN31pr'def test (): # Esimesed neli testinäidet pärinevad teosest "Geodeetiliste ja võrgulokaatorite vahelised konversioonid", # by Edmund T. Tyson N5JTY QST jaanuar 1989 test_data = (('Munich', (48.14666,11.60833), 'JN58td'), ('Montevideo', (-34,91, -56,21166), 'GF15vc'), ('Washington , DC ', (38,92, -77,065),' FM18lw '),
('Wellington', (-41.28333,174.745), 'RE78ir'), ('Newington, CT (W1AW)', (41.714775, -72.727260), 'FN31pr'), ('Palo Alto (K6WRU)', (37.413708) , -122.1073236), 'CM87wj'),) print 'Käituva isetesti \ n' läbitud = tõene nimele, latlon, ruudustik test_data: print '% s testimine% f% f:'% (nimi, latlon [0 ], latlon [1]) test_grid = to_grid (latlon [0], latlon [1]) kui test_grid! = ruudustik: print 'Failed' + test_grid + 'peaks olema' + grid pass = Vale muu: print 'Passed' + test_grid print '' kui see on läbitud: print 'Passed!' else: print 'Failed!' def main (argv = Puudub): kui argv on Puudub: argv = sys.argv kui len (argv)! = 3: use () print '' test () else: print to_grid (float ( argv [1]), ujuk (argv [2])) main ()  
#3
+7
Ossi Väänänen
2015-12-15 04:30:26 UTC
view on stackexchange narkive permalink

Minu esimene postitus SO-s. Siin on C versioon ... tegi selle Arduino projekti jaoks.

  void calcLocator (char * dst, double lat, double lon) {int o1, o2, o3; int a1, a2, a3; kahekordne ülejäänud; // ülejäänud pikkuskraad = lon + 180,0; o = = int (ülejäänud / 20,0); järelejäänud = ülejäänud - (topelt) o1 * 20,0; o2 = (int) (ülejäänud / 2,0); järelejäänud = ülejäänud - 2,0 * (topelt) o2; o3 = (int) (12,0 * ülejäänud); // ülejäänud laiuskraad = lat + 90,0; a1 = (int) (ülejäänud / 10,0); järelejäänud = ülejäänud - (kahekordne) a1 * 10,0; a2 = (int) (ülejäänud); järelejäänud = ülejäänud - (kahekordne) a2; a3 = (int) (24,0 * ülejäänud); dst [0] = (char) o + A; dst [1] = (char) a1 + 'A'; dst [2] = (char) 02 + '0'; dst [3] = (char) a2 + '0'; dst [4] = (char) o3 + 'A'; dst [5] = (char) a3 + 'A'; dst [6] = (char) 0;}  
#4
+5
Chris AC2CZ
2015-03-26 06:14:33 UTC
view on stackexchange narkive permalink

See aitas mind. Kõigile, kes seda vajavad, on siin Java-port:

  public class Location {String latlon; Pael neiu; avalik asukoht (string p1, string p2) {float lat = -100.0f; ujuk lon = 0,0f; proovige {lat = Float.parseFloat (p1); lon = Float.parseFloat (p2); neiupea = latLonToGridSquare (lat, lon); } saak (erand e) {// TODO Automaatne genereeritud püüdeplokk e.printStackTrace (); }} avalik asukoht (float lat, float lon) {proovige {maidenhead = latLonToGridSquare (lat, lon); } saak (erand e) {// TODO Automaatne genereeritud püüdeplokk e.printStackTrace (); }} private void gridSquareToLatLon (String grid) {} ​​public String latLonToGridSquare (float lat, float lon) viskab Erand {float adjLat, adjLon; char GLat, GLon; String nLat, nLon; char gLat, gLon; ujuk rLat, rLon; String U = "ABCDEFGHIJKLMNOPQRSTUVWX"; String L = U.toLowerCase (); // toetab Chris Venessi 2002-2012 LatLoni teeki ja // muid objekte, millel on omadused lat / lon // omadused võivad olla paremad funktsioonid, arvud või stringid, kui (Float.isNaN (lat)) viskab uue erandi ("lat on NaN" ); kui (Float.isNaN (lon)) viskab uue erandi ("lon on NaN"); if (Math.abs (lat) == 90.0) viska uus erand ("ruudustiku ruudud ei kehti N / S poolustel"); kui (Math.abs (lat) > 90) viskab uue erandi ("kehtetu laiuskraad:" + lat); kui (Math.abs (lon) > 180) viskab uue Erandi ("kehtetu pikkuskraad:" + lon); adjLat = lat + 90; adjLon = lon + 180; GLat = U.charAt ((int) (adjLat / 10)); GLon = U.charAt ((int) (adjLon / 20)); nLat = "" + (int) (adjLat% 10); nLon = "" + (int) ((adjLon / 2)% 10); rLat = (adjLat - (int) (adjLat)) * 60; rLon = (adjLon - 2 * (int) (adjLon / 2)) * 60; gLat = L.charAt ((int) (rLat / 2,5)); gLon = L.charAt ((int) (rLon / 5)); Stringi lokaator = "" + GLon + GLat + nLon + nLat + gLon + gLat; tagasilokaator; }}  

Ja siin on JUniti testjuhtum:

  import staatiline org.junit.Assert. *; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test ; public class LocationTest {@Test public void testLatLonToGridSquare () {Location loc = new Location (48.14666f, 11.60833f); System.out.println (loc.maidenhead); assertEquals (loc.maidenhead, "JN58td"); loc = uus asukoht ("- 34.91", "- 56.21166"); System.out.println (loc.maidenhead); assertEquals (loc.maidenhead, "GF15vc"); loc = uus asukoht (38.92f, -77.065f); System.out.println (loc.maidenhead); assertEquals (loc.maidenhead, "FM18lw"); loc = uus asukoht (-41,28333f, 174,745f); System.out.println (loc.maidenhead); assertEquals (loc.maidenhead, "RE78ir"); loc = uus asukoht (41.714775f, -72.727260f); System.out.println (loc.maidenhead); assertEquals (loc.maidenhead, "FN31pr"); loc = uus asukoht (37.413708f, -122.1073236f); System.out.println (loc.maidenhead); assertEquals (loc.maidenhead, "CM87wj"); loc = uus asukoht (35.0542f, -85.1142f); System.out.println (loc.maidenhead); assertEquals (loc.maidenhead, "EM75kb"); }}  
#5
+3
dh1tw
2014-10-12 05:09:47 UTC
view on stackexchange narkive permalink

Lisasin asukoha põhised arvutused PyHamToolsi - avatud lähtekoodiga pythoni teeki, mida on lihtne kasutada:

See on sama lihtne kui see:

  from pyhamtools .locatori impordi arvuta kaugus, latlong_to_locatorlocator1 = latlong_to_locator (48.52, 9.375) locator2 = latlong_to_locator (-32.77, 152.125) distance = arvuta_heading (locator1, locator2) print ("%. 1fkm"% kaugus] 16466.4.4 

Rohkem näiteid ja dokumentatsiooni leiate aadressilt: http://pyhamtools.readthedocs.org/en/latest/index.html

#6
+2
Dan KD2EE
2013-10-23 17:32:42 UTC
view on stackexchange narkive permalink

Alustuseks võite kasutada kaarti, kuid see läheb käest ära, kui jõuate teisest numbrikomplektist kaugemale. Veebis on kalkulaatorid, näiteks see QRZ-ist või see kaardipõhine lokaator. Seda on võimalik ka käsitsi arvutada - Vikipeedia artiklis on nende töö kirjeldus hea.

Põhimõtteliselt ehitavad kaks esimest tähemärki ruudustiku, nagu kõik kaart. Esimene märk on pikkuskraad, teine ​​laiuskraad ja esimene paar tähti A-R, mis tähendab, et maailm on jagatud 18 viiluks. Kuna siin on 360 kraadi ja 180 laiuskraadi, tähendab see, et iga ruudustiku ruut on umbes 18 kraadi lai ja 9 kraadi pikk. See algab 180 kraadi läänes ja 90 kraadi lõunas, nii et kui ma olen kuuendas ruudustikus 180 ° läänest idas (see tähendab, et minu pikkuskraad on 72 lääne ja 90 W vahel), on minu esimene tegelane F. Seejärel teine numbrit jagab selle kümneks võrdseks viiluks jne.

#7
+2
Damion Junk
2015-08-03 20:19:53 UTC
view on stackexchange narkive permalink

Ma ei näinud ühtegi vastust, mille laiendatud ruut oleks viidatud artiklile Wikipedia. Minu Clojure'i rakendus (GitHub Gist Here) kodeerib neljanda ja viienda paari.

  (defn to-maidenhead [lat long] (let [long (-> long ( + 180) (/ 2)) lat (-> lat (+ 90)) lõbus [# (* 10 (mod% 1)) # (* 24 (mod% 1)) # (* 10 (mod% 1)) # (* 24 (mod% 1))] autod [\ A \ 0 \ a \ 0 \ a]] (kaart (fn [geo] (kaart (fn [n auto] (char (+ (auto) n) )) (vähendused (fn [n fun] (fun n)) (/ geo 10) funs) autod)) [pikk lat]))) (def to-maidenhead-str (komp # (rakenda str%) # (rakendama interleave%) to-maidenhead))  

Lihtne testimisvõte:

  (kommentaar (rakendage str (rakendage interleave (neiupeale 36.165926 -86.723285) ))) ;; = > "EM66pd39et" (ja (= "EM66pd39et" (kuni neiu-str 36.165926 -86.723285)) (= "OF86cx76ql" (kuni neiu-str -33.014673 116.230695)) (= "FD54oq44oh" ( neiu-pea-str -55.315349 -68.794971)) (= "PM85ge79vh" (to-ma idenhead-str 35.205535 136.56579))) ;; = > true ;; Lihtsalt lihtne test erinevatel koordinaatidel kogu maailmas. ;; Neitsilokaator on võetud aadressilt http://no.nonsense.ee/qth/map.html)  
#8
+1
J damne
2015-12-25 23:56:09 UTC
view on stackexchange narkive permalink

Vaadake lehte numpy.meshgrid

http://docs.scipy.org/doc/numpy-1.10.0/reference/generated/numpy.meshgrid.html

Lingid iseenesest pole eriti head vastused. Võib-olla võiksite lisada veel üksikasju, näiteks selgitada, mida numpy.meshgrid teeb ja kuidas seda asjakohasel viisil kasutada?
#9
+1
Paul King
2016-07-08 01:00:37 UTC
view on stackexchange narkive permalink

Tundub, et kõik lahendused, mida ma olen näinud, ajavad sama koodi uuesti läbi mõtlemata, mis tegelikult toimub. Otsustasin kirjutada lahenduse, mis lahendab üldise juhtumi, muutes tulemuse täpsuse laiendamise mis tahes pikkuseks lihtsaks. Kuna olen iOS-i arendaja, on lahendus Swiftis:

  private let upper = "ABCDEFGHIJKLMNOPQRSTUVWX" private let lower = "abcdefghijklmnopqrstuvwx" public func neiu (laiuskraad: topelt, pikkuskraad: topelt) - > string {var lonDegrees: Double = 360 var latDegrees: Double = 180 var lon = longitude + 180.0 var lat = platitude + 90.0 var lonRemainder = lon var latRemainder = lat func gridPair (jaotused: kahekordsed) -> (kahekordsed, kahekordsed) { lonDegrees = lonDegrees / jagunemised latDegrees = latDegrees / jaotused lon = lonRemainder / lonDegrees lonRemainder = lonRemainder% lonDegrees lat = latRemainder / latDegrees latRemainder = latRemainder% latDegrees return (lon, lat)} (gridLatField) (gridLatField gridLonSquare, gridLatSquare) = gridPair (10) let (gridLonSubSquare, gridLatSubSquare) = gridPair (24) let (gridLonExtSquare, gridLatExtSquare) = gridPair (10) le t (gridLonSubExtSquare, gridLatSubExtSquare) = gridPair (24) return "\ (ülemine [Int (gridLonField)]) \ (ülemine [Int (gridLatField)]) \ (Int (gridLonSquare)) \ (Int (gridLatSquare)) \ (alumine [Int (gridLonSubSquare)]]) (alumine [Int (gridLatSubSquare)]) \ (Int (gridLonExtSquare)) \ (Int (gridLatExtSquare)) \ (madalam [Int (gridLonSubExtSquare)]) \ (alumine [Int (gridLatSubExtSquare)] ) "}  
#11
  0
Paul
2015-01-26 03:33:11 UTC
view on stackexchange narkive permalink

Javascriptist ei leidnud ma koos Google'iga ruudustiku kogu, kuigi ilmselgelt on mitmel seotud singi kaardistamise veebisaidil olemas kood.

Seega kodeerisin üles HamGridSquare.js põhineb osaliselt K6WRU ülaloleval vastusel.

See läbib tema testid.

Funktsioonide definitsioonid ühilduvad MeteorJS raamistikuga ja toetavad erinevaid sisendeid.

Kõnel latLonFromGridSquare () -il võib olla kaks arv- või stringiparameetrit (lat, lon) või üks parameeter, mis on massiiv või objekt numbrilised, stringi- või funktsiooniomadused ([lat, lon]) ({lat: nnn, lon: nnn}) ({lat: latGetterFunc, lon: lonGetterFunc}) . Viimane peaks ühilduma Chris Venessi LatLon JS-i teegi loodud LatLoni objektidega. Chrisi LatLoni teek pakub viisi kauguste ja laagrite arvutamiseks.

  // HamGridSquare.js // Autoriõigus 2014 Paul Brewer KI6CQ // Litsents: MIT-litsents http://opensource.org/licenses / MIT või CC-BY-SA //// Javascripti rutiinid, et teisendada lat-lonist Maidenheadi ruudukujulisteks ruutudeks // kasutatakse tavaliselt Ham Raadiosatelliidi operatsioonides ja VHF-võistlustel //// Inspireeritud osaliselt K6WRU Walter Underwoodi pythoni vastusest / http://ham.stackexchange.com/a/244// selle korstna ületäitumise küsimuse juurde: // Kuidas saab teisendada latist / pikast võrguväljakuks // http://ham.stackexchange.com/questions/221 / how-can-one-convert-from-lat-long-to-grid-square // latLonToGridSquare = function (param1, param2) {var lat = -100.0; var lon = 0,0; var adjLat, adjLon, GLat, GLon, nLat, nLon, gLat, gLon, rLat, rLon; var U = 'ABCDEFGHIJKLMNOPQRSTUVWX' var L = U.toLowerCase (); // toetab Chris Venessi 2002-2012 LatLoni teeki ja // muid objekte, millel on omadused lat / lon // omadused võivad olla funktsioonid getter, arvud või stringid funktsioonileNUM (x) {if (typeof (x) === 'number' ) return x; if (typeof (x) === 'string') tagastab parseFloat (x); if (typeof (x) === 'funktsioon') tagastab parseFloat (x ());
viska "HamGridSquare - toNum - ei saa sisendit teisendada:" + x; } if (typeof (param1) === 'objekt') {if (param1.length === 2) {lat = toNum (param1 [0]); lon = toNum (param1 [1]); } else if (('lat' param1-s) && ('lon' param1-s)) {lat = toNum (param1.lat); lon = toNum (param1.lon); } else if (('laiuskraad' param1-s) && ('pikkuskraad' param1-s)) {lat = toNum (param1.latitude); lon = toNum (param1.pikkus); } else {viska "HamGridSquare - ei saa objekti teisendada -" + param1; }} else {lat = toNum (param1); lon = toNum (param2); } if (isNaN (lat)) viska "lat on NaN"; kui (isNaN (lon)) viska "lon on NaN"; kui (Math.abs (lat) === 90,0) viskama "N / S poolustel sobimatud ruudustiku ruudud"; kui (Math.abs (lat) > 90) viskama "kehtetu laiuskraad:" + lat; kui (Math.abs (lon) > 180) viskama "kehtetu pikkuskraad:" + lon; adjLat = lat + 90; adjLon = lon + 180; GLat = U [Math.trunc (adjLat / 10)]; GLon = U [Math.trunc (adjLon / 20)]; nLat = "" + Math.trunc (adjLat% 10); nLon = "+ Math.trunc ((adjLon / 2)% 10); rLat = (adjLat - Math.trunc (adjLat)) * 60; rLon = (adjLon - 2 * Math.trunc (adjLon / 2)) * 60; gLat = L [Math.trunc (rLat / 2,5)]; gLon = L [Math.trunc (rLon / 5)]; return GLon + GLat + nLon + nLat + gLon + gLat;} testGridSquare = function () {// Esimesed neli testinäidet pärinevad teosest "Conversion Between Geodetic and Grid Locator Systems", // autor Edmund T. Tyson / originaalsed testiandmed / tsiteeringud Walter Underwood K6WRU // viimane test ja kodeerimine Javascripti Pythonilt Paul Breweri poolt KI6CQ var testData = [['Munich', [48.14666,11.60833], 'JN58td'], ['Montevideo', [ [-34.91, -56.21166]], 'GF15vc'], ['Washington, DC', [{lat: 38.92, lon: -77.065}], 'FM18lw'], ['Wellington', [{laiuskraad: -41.28333 , pikkuskraad: 174.745}], 'RE78ir'], ['Newington, CT (W1AW)', [41.714775, -72.727260], 'FN31pr'], ['Palo Alto (K6WRU)', [[37.413708, -122.1073236] ], 'CM87wj'],
['Chattanooga (KI6CQ / 4)', [{lat: function () {return "35.0542"; }, lon: function () {return "-85.1142"}}], "EM75kb"]]; var i = 0, l = testData.length, result = "" thisPassed = 0, totalPassed = 0; for (i = 0; i<l; ++ i) {tulemus = latLonToGridSquare.apply ({}, testData [i] [1]); thisPassed = tulemus === testData [i] [2]; console.log ("test" + i + ":" + testData [i] [0] + "" + JSON.stringify (testData [i] [1]) + "result =" + tulemus + "oodatav =" + testData [ i] [2] + "läbitud =" + seePassed); totalPassed + = thisPassed; } console.log (totalPassed + "/" + l + "test on läbitud"); return totalPassed === l;}  
Tõenäoliselt kauglöök, kuid kas teaksite seda koodi laiendada, et võtta ka kauguse parameeter ja tagastada ruudustiku massiivi ringjoonega, mille kaugus on raadiusena?
@SteveE on raamatukogusid, kus saate pikkusele latile anda pealkirja ja vahemaa ning saada tagasi sihtkoha koordinaadid. Helistage sellele silmus, kuna pealkiri on mitmekesine, ja teisendage kõik sihtkoha koordinaadid ruudustikuks. Seejärel puhastage see, sorteerides loendi ja eemaldades duplikaadid. Edu.
#12
  0
tomfanning
2017-02-03 05:00:30 UTC
view on stackexchange narkive permalink

C # versioon

  public staatiline string String LatLonToGridSquare (double lat, double lon) {double adjLat, adjLon; char GLat, GLon; String nLat, nLon; char gLat, gLon; kahekordne rLat, rLon; String U = "ABCDEFGHIJKLMNOPQRSTUVWX"; String L = U.ToLower (); if (double.IsNaN (lat)) viska uus erand ("lat on NaN"); kui (topelt.IsNaN (lon)) viskama uue erandi ("lon on NaN"); if (Math.Abs ​​(lat) == 90.0) viskama uue erandi ("ruudustiku ruudud ei kehti N / S poolustel"); kui (Math.Abs ​​(lat) > 90) viskab uue erandi ("kehtetu laiuskraad:" + lat); kui (Math.Abs ​​(lon) > 180) viskab uue Erandi ("kehtetu pikkuskraad:" + lon); adjLat = lat + 90; adjLon = lon + 180; GLat = U [(int) (adjLat / 10)]; GLon = U [(int) (adjLon / 20)]; nLat = "" + (int) (adjLat% 10); nLon = "" + (int) ((adjLon / 2)% 10); rLat = (adjLat - (int) (adjLat)) * 60; rLon = (adjLon - 2 * (int) (adjLon / 2)) * 60; gLat = L [(int) (rLat / 2,5)]; gLon = L [(int) (rLon / 5)]; Stringi lokaator = "" + GLon + GLat + nLon + nLat + gLon + gLat; tagasilokaator;}  
#13
  0
KN4BIA
2017-12-28 08:12:39 UTC
view on stackexchange narkive permalink

Lihtsalt parandus Ossi Väänäneni ühe ülaltoodud vastuse kohta, mis algab sellega:

  void calcLocator (char * dst, double lat, double lon) {[...] dst [ 0] = (char) o1 + 'A'; dst [1] = (char) a1 + 'A'; dst [2] = (char) 02 + '0'; dst [3] = (char) a2 + '0'; dst [4] = (char) o3 + 'A'; dst [5] = (char) a3 + 'A'; dst [6] = (char) 0; }  

Kaaluge dst-väärtuste teisendamist ascii-tähemärkideks. Asendage ülaltoodud dst-massiivi kirjed järgmisega:

  dst [0] = char (o1 + 65); dst [1] = süsi (a1 + 65); dst [2] = söe (o2 + 48); dst [3] = süsi (a2 + 48); dst [4] = söe (o3 + 97); dst [5] = char (a3 + 97);  

Pluss 65 annab ascii tähtede väärtused suurtähtedele, +48 numbritele ja +97 väiketähtedele.

Näite tulemused järgmiselt:

  char grid [4]; calcLocator (grid, gps.location.lat (), gps.location.lng ()); Serial.print ( ruudustik); // tulemused on järgmises vormingus: AB01ab  

kõik on



See küsimus ja vastus tõlgiti automaatselt inglise keelest.Algne sisu on saadaval stackexchange-is, mida täname cc by-sa 3.0-litsentsi eest, mille all seda levitatakse.
Loading...