zeds Posted November 6, 2007 Share Posted November 6, 2007 (edited) Sveiki! Vēlējos veikt koordināšu transformāciju no LKS-92 izrādījās,ka tas nav tik vienkārši kā liekas. 1. Cik saprotu Latvijā pastāv divi kartogrāfijas standarta LKS-92 varianti (FN=0 FN=-6000000 .lai ko tas arī nenozīmētu. Man pagaidām tā ir tukša skaņa). Kuru variantu izmanto JS Latvia karte ? 2. Varbūt kāds labs cilvēks varētu uzrakstīt formulu ar visām konstantēm kā pārrēķināt abus LKS-92 variantus uz standarta GPS koordināšu sistēmu WGS84 un otrādi. Es domāju augot GPS popularitātei šāda problēma forumā un ne tikai uzpeldēs arvien biežāk, tā ka šo labdari daudzi pieminēs ar labiem vārdiem, jo nez vai visiem būs pa spēkam iedziļināties kartogrāfijas problēmās. 3. ja nu formulas nav varbūt kādam ir laba literatūra par šo jautājumu. Citādi vārdi elipsoidālās koordinātes utt man pagaidām ir tukša skaņa. Pat nevaru formulās konstantes ielikt jo nesaprotu kas tās ir. Negribas , bet nāksies mācīties. P.S. kalkulatorus un karšu programmatūru lūdzu neieteikt, vajag formulu lai varu pats rēķināt. P.P.S. piedodiet ja ļoti vienkāršs jautājums, nezinu kur lai sameklē . google neko daudz man neatgrieza Edited November 6, 2007 by zeds Link to comment Share on other sites More sharing options...
bubu Posted November 6, 2007 Share Posted November 6, 2007 Reku pieejams kalkulators ar visu sourci javaskriptā (tur arī vari apskatīties forumlas): http://www.dmap.co.uk/ll2tm.htm LKS-92 var iestādīt izvēloties GridArea = UTM (International), Central Meridian = Enter, 24, E. WGS84 vien ir tie paši grādi/minūtes/sekundes tik uzrakstīts decimāldaļā. Tb divos skaiļos - garuma grādi un platuma grādi. Link to comment Share on other sites More sharing options...
zeds Posted November 6, 2007 Author Share Posted November 6, 2007 (edited) man ir kkas formātā: 24.02168;56.55469 , ar komentāru Garums;Platums. Nezinu kas tas ir bet UTM tas nav, pavisam droši. Nu un kā lai es to iebakstu kalkulatorā ? kas pie velna ir easting un northing, nemaz nerunājos kas ir 24 un E. Edited November 6, 2007 by zeds Link to comment Share on other sites More sharing options...
Vilx Posted November 6, 2007 Share Posted November 6, 2007 (edited) Tad NO LKS vai UZ LKS? Tev jau ir wgs84 koordinātas ar garumu un platumu, ko vēl Tu gribi? Ja nu gribās baigi advancēto kalkulatoru, tad lūdzu: http://www2.racurs.ru/download/photomod42/...alc_rus_490.rar Edited November 6, 2007 by Vilx Link to comment Share on other sites More sharing options...
zeds Posted November 6, 2007 Author Share Posted November 6, 2007 Tā. Man pašam JS Latvija nav, tāpēc tagad es pat nezinu kādas koordinātes man ir iedotas. Koordinātes ir ņemtas , kā man apgalvoja no JS Latvija kurai savukārt ir uzlikts izmantot JKS-92 koordinātu sistēmu. No tā es izdarīju secinājumu ka tās ir JKS-92. No otras puses uzliekot šo punktu uz kartes pēc WGS84 (ie Google Maps ) , man šis punkts rīgas vietā sanaak kaut kur starp Jelgavu un iecavu, tātad WGS84 tas arī nav. Piedodiet protams , bet vai es neuzrakstīju pietiekami skaidri ka man vajag formulu nevis kalkulatoru ? Link to comment Share on other sites More sharing options...
Vilx Posted November 6, 2007 Share Posted November 6, 2007 (edited) JS rāda gan LKS, gan WGS, vajag tikai paņemt īstās. LKS ir formātā XXXXXX.XXX un YYYYYY.YYY, WGS ir formātā D.M.S, D.M.S., kur D-grādi, M-minūtes, S-sekundes. GPS parasti var ievadīt WGS, ja vien tas nav kāds magelāns, kuram var barot iekšā uzreiz LKS koordinātas. Nu piedod, neuzmanīgi lasīju par to formulu, to gan nezinu, bet zinu, ka jāvada iekšā lērums parametru, tādus kā elipsoīds, josla, koordinātas, u.t.t., citiem vārdiem, tā gluži uz kalkulatora vis nesarēķināsi. P.S. Par pāris aliem var sarunāt, ka ieskenēšu mācību grāmatas lapas, kas attiecas uz šo tēmu. Edited November 6, 2007 by Vilx Link to comment Share on other sites More sharing options...
_dunduks_ Posted November 6, 2007 Share Posted November 6, 2007 (edited) Easting un Northing ir grādu attiecība no Griničas meridiāna un ekvatora. 24.xxxxx nozīmē ka tas tik grādus ir uz austrumien no Griničas. Saukts arī par "Garumu". Austrumus vēl apzīmē ar "+" zīmi. Ja ir mīnus zīme "-24.XXXXX" - tas nozīmē, ka tas ir uz rietumiem no Griničas. 56.xxxxxx nozīmē 56 grādus uz ziemeļiem no ekvatora. Saukts arī par platumu. -56.xxxxxx nozīmē uz dievidiem no ekvatora. JS latvijai 24E nozīmē, ka tas ir kartes vertikālā ass līnija (24 grādi uz austrumiem) no kuras tālāk tiek veidota lodes (zemes) palknes projekcija, jo kā zināms lodes (zemes) viersmu nevar nekļūdīgi attēlot plaknē - vai nu platības vai arī krasta līnija būs izkropļota salīdzinot ar dabā esošo. Gan maps.google.com gan JS izmanto WGS-84 koordināšu sistēmu. Iespējams, ka kādu ciparu neesi uzrakstījis pareizi. ceru, ka nekļūdos. Edited November 6, 2007 by _dunduks_ Link to comment Share on other sites More sharing options...
tehniķis Posted November 6, 2007 Share Posted November 6, 2007 Vispār jau WGS84(UTM) koordinātes ir attēlojamas 3 formātos: DECIMAL, DDD MM.MMM , DDD MM SS.SSS Ar LKS92 ir tas pats. Vienu brīdi arī bija vajadzīga formula LKS92->WGS84 un otrādi, bet neatradu(nebija tik svarīgi), izmantoju kaut kādu CoordTrans progzi P.S. LKS92 izmanto Valsts Zemes Dienests mērniecības plānos Link to comment Share on other sites More sharing options...
zeds Posted November 6, 2007 Author Share Posted November 6, 2007 paldies! Jūtu nāksies meklēt kādu kartogrāfijas grāmatu - no kā mācās mērnieki ? Link to comment Share on other sites More sharing options...
Vilx Posted November 6, 2007 Share Posted November 6, 2007 Ir jauna izdevuma grāmata- "Ģeodēzija", ir pāris gadus veca "Mūsdienu topogrāfiskās kartes", ir lērums vecu, kas jāmeklē bibliotēkā. Pirmās divas ir manā īpašumā. Prom nedodu, bet ieskenēt kaut ko varu. Link to comment Share on other sites More sharing options...
aig9 Posted November 6, 2007 Share Posted November 6, 2007 JS Latvija3 izmanto LKS-92 ar Transversālo Merkatora projekciju (TM-1993) Ass meridiānu 24 Mēroga koificientu 0,9996 Kordinātu atskaites punktiem no ass meridiāna 5000000m no ekvatora 0 m Elipsoīdu GRS 1980 Link to comment Share on other sites More sharing options...
zeds Posted November 6, 2007 Author Share Posted November 6, 2007 (edited) aigs: skan lieliski, ja es vēl saprastu kas ir viss zemāk minētais. Es jau saprotu , ka laikam esmu vienīgais :shock: kursh šeit nezina slaveno elipsoīdu GRS 1980... Vilx: paldies , pecentīšos nopirkt grāmatu, negribas Tevi apgrūtināt. Bet ja nesanāks tad gan palūgšu nokopēt. Edited November 6, 2007 by zeds Link to comment Share on other sites More sharing options...
aig9 Posted November 6, 2007 Share Posted November 6, 2007 Nu jā. Nevaru teikt, ka man būtu ļoti liela izpratne par šiem jautājumiem. Darbā iznāk saskarties ar dažādām kordinātu sistēmām, bet pāreja no vienas uz otru notiek ar programmu nevis formulu palīdzību. Link to comment Share on other sites More sharing options...
Vilx Posted November 6, 2007 Share Posted November 6, 2007 aig9, kā domā, kā tad programma zina, kas un kā jāpārvērš? Vai tik ne pēc formulas 8) Programmu lietojam tāpēc, ka ļoti reti vajag pārvērst tikai vienu koordinātu pāri, parasti jau veselu čupu, un tad ar rociņām ir dikti ilgi. Par tām grāmatām- pat nezinu, kur tās varētu meklēt iepirkšanai, pārāk jau nu specifiska literatūra un metiens mazs, parasti tiek izdalīta ieinteresētajām pusēm, pasniedzējiem, katedras darbiniekiem. Bet varu katedrā apjautāties, vai nav kaut kur nopērkamas. Link to comment Share on other sites More sharing options...
aig9 Posted November 6, 2007 Share Posted November 6, 2007 vilx, es jau to saprotu. Gribēju tikai teikt, ka es šīs formulas nezinu, jo programmas tās zina manā vietā. Link to comment Share on other sites More sharing options...
tehniķis Posted January 29, 2008 Share Posted January 29, 2008 Šājā failā c++ kods kurā var transformēt koordinātes no LatLon uz Transverse Mercator projekciju un otrādi. No turienes var izlobīt formulu, pašam gan, īsināt, nav vēlme. Adaptēju kodu uz pascal, un izveidoju mazu tūli, kurš liekas, ka strādā. Link to comment Share on other sites More sharing options...
ivars777 Posted February 18, 2008 Share Posted February 18, 2008 Es lietoju bibliotēku proj.4 (http://proj.maptools.org/). Ir gan wraperi dažādām valodām, gan arī komandrinas tūlis. Projekciju definēšanai izmanto parametru rindu, kuru dažādām projekcijām var dabūt (lai pašam nav jādomā) piemēram šeit http://spatialreference.org/ref/epsg/. Var, protams, pats formulu sakodēt, pēc formulas apraksta, kuru var šur tur atrast (piemēram, http://www.remotesensing.org/geotiff/proj_..._mercator.html) vai gatava koda gabaliem (piemēram, http://www2.viamichelin.com/apijs/js/map/T...Referential.js). ivars Link to comment Share on other sites More sharing options...
Instigater Posted April 2, 2009 Share Posted April 2, 2009 Atļaušos iemest linku uz diezgan noderīgu kalkulatoru Link to comment Share on other sites More sharing options...
modzho Posted April 28, 2010 Share Posted April 28, 2010 Meklējot pa tēmu komentus arī es atļaušos iemest linku uz citu Koordināšu kalkulatoru Noderīgs resurss. Ir transformācija starp LKS-92 un UTM un WGS84 visos virzienos. Google karte gan nav diez ko preciza koordināšu nolasīšanai, bet pats kalkulators pilda savas funkcijas ekscelenti. Var arī savas koordinātes atlikt uz kartes. Link to comment Share on other sites More sharing options...
andza Posted April 28, 2010 Share Posted April 28, 2010 Diezgan jauks apskats: http://www.gisnet.lv/gisnet/2010/04/ko-nozime-lks-92-sesu-miljonu-operas-kartejais-celiens/ Link to comment Share on other sites More sharing options...
Knagis Posted August 27, 2010 Share Posted August 27, 2010 Jāsaka, ka uzdarbošos par kapraci, paceļot 4 mēnešus vecu topicu. Autoram ļoti iespējams vairs tas nepalīdzēs, bet varbūt noderēs kādam citam, kas nejauši iebridīs šajā forumā, meklējot atbildes. Izmantojot modzo minēto koordinātu kalkulatoru, noportēju tā kodu no JavaScript uz C# (.NET). Ja kādam vajadzīgs, tad kodu var lejupielādēt: http://knagis.miga.lv/blog/post/2010/08/27/LKS92-koordinatu-sistema.aspx Link to comment Share on other sites More sharing options...
m1raz Posted April 21, 2018 Share Posted April 21, 2018 function LKSToLatLon($x, $y) { // Ellipsoid model constants (actual values here are for WGS84) $UTMScaleFactor = 0.9996; $sm_a = 6378137.0; $sm_b = 6356752.314140; $sm_EccSquared = 6.69437999013e-03; $x -= 500000.0; // Pirmā atšķirība no WGS84 - Kilometriņš šurpu, kilometriņš turpu. $y -= -6000000.0; $x /= $UTMScaleFactor; $y /= $UTMScaleFactor; // Otrā atšķirība no WGS84 - Centrālais meridiāns ir citur. $lambda0 = deg2rad(24); // Precalculate n (Eq. 10.18) $n = ($sm_a - $sm_b) / ($sm_a + $sm_b); // Precalculate alpha_ (Eq. 10.22) // (Same as alpha in Eq. 10.17) $alpha_ = (($sm_a + $sm_b) / 2.0) * (1 + (pow($n, 2.0) / 4) + (pow($n, 4.0) / 64)); // Precalculate y_ (Eq. 10.23) $y_ = $y / $alpha_; // Precalculate beta_ (Eq. 10.22) $beta_ = (3.0 * $n / 2.0) + (-27.0 * pow($n, 3.0) / 32.0) + (269.0 * pow($n, 5.0) / 512.0); // Precalculate gamma_ (Eq. 10.22) $gamma_ = (21.0 * pow($n, 2.0) / 16.0) + (-55.0 * pow($n, 4.0) / 32.0); // Precalculate delta_ (Eq. 10.22) $delta_ = (151.0 * pow($n, 3.0) / 96.0) + (-417.0 * pow($n, 5.0) / 128.0); // Precalculate epsilon_ (Eq. 10.22) $epsilon_ = (1097.0 * pow($n, 4.0) / 512.0); // Now calculate the sum of the series (Eq. 10.21) $phif = $y_ + ($beta_ * sin(2.0 * $y_)) + ($gamma_ * sin(4.0 * $y_)) + ($delta_ * sin(6.0 * $y_)) + ($epsilon_ * sin(8.0 * $y_)); // Precalculate ep2 $ep2 = (pow($sm_a, 2.0) - pow($sm_b, 2.0)) / pow($sm_b, 2.0); // Precalculate cos (phif) $cf = cos($phif); // Precalculate nuf2 $nuf2 = $ep2 * pow($cf, 2.0); // Precalculate Nf and initialize Nfpow $Nf = pow($sm_a, 2.0) / ($sm_b * sqrt(1 + $nuf2)); $Nfpow = $Nf; // Precalculate tf $tf = tan($phif); $tf2 = $tf * $tf; $tf4 = $tf2 * $tf2; // Precalculate fractional coefficients for x**n in the equations below to simplify the expressions for latitude and longitude. $x1frac = 1.0 / ($Nfpow * $cf); $Nfpow *= $Nf; // now equals Nf**2) $x2frac = $tf / (2.0 * $Nfpow); $Nfpow *= $Nf; // now equals Nf**3) $x3frac = 1.0 / (6.0 * $Nfpow * $cf); $Nfpow *= $Nf; // now equals Nf**4) $x4frac = $tf / (24.0 * $Nfpow); $Nfpow *= $Nf; // now equals Nf**5) $x5frac = 1.0 / (120.0 * $Nfpow * $cf); $Nfpow *= $Nf; // now equals Nf**6) $x6frac = $tf / (720.0 * $Nfpow); $Nfpow *= $Nf; // now equals Nf**7) $x7frac = 1.0 / (5040.0 * $Nfpow * $cf); $Nfpow *= $Nf; // now equals Nf**8) $x8frac = $tf / (40320.0 * $Nfpow); // Precalculate polynomial coefficients for x**n. -- x**1 does not have a polynomial coefficient. $x2poly = -1.0 - $nuf2; $x3poly = -1.0 - 2 * $tf2 - $nuf2; $x4poly = 5.0 + 3.0 * $tf2 + 6.0 * $nuf2 - 6.0 * $tf2 * $nuf2 - 3.0 * ($nuf2 * $nuf2) - 9.0 * $tf2 * ($nuf2 * $nuf2); $x5poly = 5.0 + 28.0 * $tf2 + 24.0 * $tf4 + 6.0 * $nuf2 + 8.0 * $tf2 * $nuf2; $x6poly = -61.0 - 90.0 * $tf2 - 45.0 * $tf4 - 107.0 * $nuf2 + 162.0 * $tf2 * $nuf2; $x7poly = -61.0 - 662.0 * $tf2 - 1320.0 * $tf4 - 720.0 * ($tf4 * $tf2); $x8poly = 1385.0 + 3633.0 * $tf2 + 4095.0 * $tf4 + 1575 * ($tf4 * $tf2); // Calculate latitude $lat = $phif + $x2frac * $x2poly * ($x * $x) + $x4frac * $x4poly * pow($x, 4.0) + $x6frac * $x6poly * pow($x, 6.0) + $x8frac * $x8poly * pow($x, 8.0); // Calculate longitude $lon = $lambda0 + $x1frac * $x + $x3frac * $x3poly * pow($x, 3.0) + $x5frac * $x5poly * pow($x, 5.0) + $x7frac * $x7poly * pow($x, 7.0); return Array(rad2deg($lat), rad2deg($lon)); } Te neliela php funkcija, kura varētu kādam kādreiz palīdzēt. Link to comment Share on other sites More sharing options...
HarijsK Posted March 7, 2019 Share Posted March 7, 2019 M1raz risinājums tikai uz Javascript pārrakstīts. (p.s. paldies, noderēja) function deg2rad(angle){ return (angle / 180) * Math.PI; } function rad2deg(radians) { return radians * (180 / Math.PI); } function LKSToLatLon(x, y) { // Ellipsoid model constants (actual values here are for WGS84) UTMScaleFactor = 0.9996; var sm_a = 6378137.0; var sm_b = 6356752.314140; var sm_EccSquared = 6.69437999013e-03; x -= 500000.0; // Pirmā atšķirība no WGS84 - Kilometriņš šurpu, kilometriņš turpu. y -= -6000000.0; x /= UTMScaleFactor; y /= UTMScaleFactor; // Otrā atšķirība no WGS84 - Centrālais meridiāns ir citur. var lambda0 = deg2rad(24); // Precalculate n (Eq. 10.18) var n = (sm_a - sm_b) / (sm_a + sm_b); // Precalculate alpha_ (Eq. 10.22) // (Same as alpha in Eq. 10.17) var alpha_ = ((sm_a + sm_b) / 2.0) * (1 + (Math.pow(n, 2.0) / 4) + (Math.pow(n, 4.0) / 64)); // Precalculate y_ (Eq. 10.23) var y_ = y / alpha_; // Precalculate beta_ (Eq. 10.22) var beta_ = (3.0 * n / 2.0) + (-27.0 * Math.pow(n, 3.0) / 32.0) + (269.0 * Math.pow(n, 5.0) / 512.0); // Precalculate gamma_ (Eq. 10.22) var gamma_ = (21.0 * Math.pow(n, 2.0) / 16.0) + (-55.0 * Math.pow(n, 4.0) / 32.0); // Precalculate delta_ (Eq. 10.22) var delta_ = (151.0 * Math.pow(n, 3.0) / 96.0) + (-417.0 * Math.pow(n, 5.0) / 128.0); // Precalculate epsilon_ (Eq. 10.22) var epsilon_ = (1097.0 * Math.pow(n, 4.0) / 512.0); // Now calculate the sum of the series (Eq. 10.21) var phif = y_ + (beta_ * Math.sin(2.0 * y_)) + (gamma_ * Math.sin(4.0 * y_)) + (delta_ * Math.sin(6.0 * y_)) + (epsilon_ * Math.sin(8.0 * y_)); // Precalculate ep2 var ep2 = (Math.pow(sm_a, 2.0) - Math.pow(sm_b, 2.0)) / Math.pow(sm_b, 2.0); // Precalculate cos (phif) var cf = Math.cos(phif); // Precalculate nuf2 var nuf2 = ep2 * Math.pow(cf, 2.0); // Precalculate Nf and initialize Nfpow var Nf = Math.pow(sm_a, 2.0) / (sm_b * Math.sqrt(1 + nuf2)); var Nfpow = Nf; // Precalculate tf var tf = Math.tan(phif); var tf2 = tf * tf; var tf4 = tf2 * tf2; // Precalculate fractional coefficients for x**n in the equations below to simplify the expressions for latitude and longitude. var x1frac = 1.0 / (Nfpow * cf); Nfpow *= Nf; // now equals Nf**2) var x2frac = tf / (2.0 * Nfpow); Nfpow *= Nf; // now equals Nf**3) var x3frac = 1.0 / (6.0 * Nfpow * cf); Nfpow *= Nf; // now equals Nf**4) var x4frac = tf / (24.0 * Nfpow); Nfpow *= Nf; // now equals Nf**5) var x5frac = 1.0 / (120.0 * Nfpow * cf); Nfpow *= Nf; // now equals Nf**6) var x6frac = tf / (720.0 * Nfpow); Nfpow *= Nf; // now equals Nf**7) var x7frac = 1.0 / (5040.0 * Nfpow * cf); Nfpow *= Nf; // now equals Nf**8) var x8frac = tf / (40320.0 * Nfpow); // Precalculate polynomial coefficients for x**n. -- x**1 does not have a polynomial coefficient. var x2poly = -1.0 - nuf2; var x3poly = -1.0 - 2 * tf2 - nuf2; var x4poly = 5.0 + 3.0 * tf2 + 6.0 * nuf2 - 6.0 * tf2 * nuf2 - 3.0 * (nuf2 * nuf2) - 9.0 * tf2 * (nuf2 * nuf2); var x5poly = 5.0 + 28.0 * tf2 + 24.0 * tf4 + 6.0 * nuf2 + 8.0 * tf2 * nuf2; var x6poly = -61.0 - 90.0 * tf2 - 45.0 * tf4 - 107.0 * nuf2 + 162.0 * tf2 * nuf2; var x7poly = -61.0 - 662.0 * tf2 - 1320.0 * tf4 - 720.0 * (tf4 * tf2); var x8poly = 1385.0 + 3633.0 * tf2 + 4095.0 * tf4 + 1575 * (tf4 * tf2); // Calculate latitude var lat = phif + x2frac * x2poly * (x * x) + x4frac * x4poly * Math.pow(x, 4.0) + x6frac * x6poly * Math.pow(x, 6.0) + x8frac * x8poly * Math.pow(x, 8.0); // Calculate longitude var lon = lambda0 + x1frac * x + x3frac * x3poly * Math.pow(x, 3.0) + x5frac * x5poly * Math.pow(x, 5.0) + x7frac * x7poly * Math.pow(x, 7.0); return [rad2deg(lat), rad2deg(lon)]; } Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now