Pagasti, novadi, un to esamība Gūgles kartēs
Papildināts 11. novembra 0:15. Pavei tik - Ipiķi Gūgles kārtē kā dzīvi, sasodīts! Sīkāk par to vsu kādu citu dienu. :)
Sveiki, dārgie lasītāji. It sevišķi tie, kuri vēlas paurbt ģeometriju, mazliet paprogrammēt, un pēcāk rezultātus uzdāvināt pasaulei, lai tā kļūtu labāka. Principā, esi sveiks, programmētāj! :)
Uzdevuma nosacījumi ir vienkārši.
Gūgles kartē nepieciešams iezīmēt precīzi jebkura Latvijas pagasta, Republikas nozīmes pilsētas vai novada kontūru. Tas ir izdarāms caur Google Maps API, izmantojot GPolygon
klasi.
Lai uzzīmētu kontūru, ir nepieciešami izejas dati. Tos (paldies Mārtiņam) var atrast vikipēdijā (pagasti un novadi, krāsoti novadi). Pirmajā failā (diemžēl, bez komentāriem), ir atrodamas robežas un, kas man ir svarīgi, kārtīgi sagrupēti poligoni visiem Latvijas pagastiem un pilsētām.
Savā piegājienā es paņēmu pirmo - Ipiķu pagastu, kurš tagad ir neatņemama manas dzīves sastāvdaļa, jo ir pirmais pagasts, kurš ienāk prātā, iedomājoties par Latvijas administratīvo dalījumu. Es arīdzan esmu par to informēts vairāk, nekā vajadzētu. Zinu, ka tā platība ir 67 km2 un 2000. gadā viņi tur bija 395 (iedzīvotāji). Nu un vēl šo to. Noteikti kādreiz turp aizbraukšu.
Tālākais teorijā ir vienkārši. Mums ir nepieciešams pārrēķināt SVG koordinātas par platuma un garuma koordinātām. Tad, nu, uzinstalēju Inkscape, vāzu vaļā lielo SVG, un provēju izmērīt atrašanās vietu Latvijas galējiem punktiem. Kad tas izdarīts, es uzmeklēju Internetā galējo punktu koordinātas uz Zemes virsmas. Dīvani, bet tajā interneta daļā, kura pasniedz savu informāciju latviešu valodā, šīs koordinātas bija norādītas ar precizitāti līdz minūtei. Attiecīgi, precīzākie dati atradās angļu vikipēdijas Latvijas ģeogrāfijas aprakstā.
Tālāk jau ir diezgan vienkārša aritmētika. Vismaz teorijā tā vajadzēja būt. Izrēķinām to, cik grādus plats mums ir viens horizontālais SVG pikselis, kā arī cik grādus augsts ir vertikālais. Vēl mazas korekcijas, lai iegūtu vienotu bāzi, un aplauziens. Labākais tuvinājums, kuru man izdevās iegūt, ir šāds.
Gala rezultātā (neesmu es nekāds ģeogrāfs vai ģeometrs, ja tādi vispār pastāv) izrādījās, ka koordinātu sistēmas ar vienkāršiem aritmētiskiem līdzekļiem pārrēķināt nevar. Jo. Pastāv zināmas atšķirības starp ģeogrāfisko koordināšu sistēmu un to, kāda tā tiek piemērota "plakanajās" kartēs - viens horizontālais kilometrs klasiskajā kartē būs konkrēts pikseļu, centimetru un collu skaits visās vietās. Kamēr, viens kilometrs uz Zemes virsmas atkarībā no platuma grāda satilpst dažādā garuma grādu, minūšu un sekunžu skaitā. Kas ir vairāk nekā loģiski (vai tā maz var būt? ja var, tad piedāvāju izmatntot terminu “paraloģiski”).
Aptuveni noskaidrot to, cik kilometrus būs viens garuma grāds interesējošajā platumā, var ar sekojošu formulu:
Kur φ ir platuma grāds, bet a un b ir Zemes ekvatoriālais un polārais rādiuss respektīvi, kuri, kā zināms, atšķiras.
Protams, es kaut kādā brīdī vēl pabakstīšos, bet varbūt kādam ir gana daudz brīva laika un vēlmes, lai isniegtu formulu, ar kuras palīdzību varētu pārrēķināt iepriekšminētās SVG kartes kordinātas uz platuma un garuma grādiem :) Pilnīgi iespējams, ka esmu vēl kaut ko aprēķinos vērā ņemamu palaidis garām.
Realizētājam, pieņemu, mūžīga slava un lauru lapu vainagi garantēti, jo es nebūt neesmu vienīgais, kuru šāda padarīšana interesē. Kā pierādījums faktam kalpos gūgles kartē adekvāti iezīmēts Ipiķu pagasts, kuram būtu jāizskatās apmēram tā, kā to uzzīmē JS iekš balticmaps.eu. Ja vēlamies kontūru, ievadam adreses vai vietas meklēšanas lauciņā “Ipiķu pagasts”, un uzklikšķinam uz pagasta saites.
P.S. Jā, iespējams, esmu saputrojies ģeogrāfiskā platuma un garuma terminos. Tas lietas būtību diez vai maina. Kā arī, varat iepazīties ar apjomīgu pētījumu par Latvijas centru (centriem, ja būsim precīzi): “Kur Latvijai vidus?”.
Mārtiņš
2009. gada 10. novembrī, plkst. 13:29
Cik vienkārši viss būtu, ja Zeme būtu plakana :)
Atecina
2009. gada 10. novembrī, plkst. 13:42
Burvīgi! Matemātika vienmēr ir patīkami satraucoša!
GhosC
2009. gada 10. novembrī, plkst. 14:10
Nu ja izejas dati ir plakani kā lapa, varbūt ir vērts iesākumam pārrēķināt uz UTM koordinātu režģi. vienīgais ka Latvija ir 2'ās UTM zonās... tālāk jau ar kādu piem - gpsbabel konvertēt uz kādu sistēmu vien vēlies.
Didulis
2009. gada 10. novembrī, plkst. 14:12
jam
2009. gada 10. novembrī, plkst. 14:16
Laacz, varbūt jārīko tweetzīmēšana? Es varētu kādas 5 pagastus uzzīmēt. Gan jau vēl kāds brīvprātīgs atrastos. To tad varētu visi izmantot.
Mārtiņš
2009. gada 10. novembrī, plkst. 14:28
Diduli, jam, bet tās kontūras jau ir sazīmētas vektorformātā SVG, problēma taču ir tikai atšķirīgās koordinātu sistēmās un ir vajadzīga transformācijas formula. Šeit ir vēl viens izejas fails, ja krāsiņas citas gribās ;) http://lv.wikipedia.org/wiki/Att%C4%93ls:Latvia_location_map.svg
Mārtiņš
2009. gada 10. novembrī, plkst. 14:48
Noskaidroju papildus lietas. Tās SVG kartes ir LKS92 formātā, savukārt Google Maps ir WGS84. Google izmantošana dod vairākas tēmas arī latviskos forumos, kur šī konvertācija tiek atrisināta.
Toms
2009. gada 10. novembrī, plkst. 14:52
Sveiciens matemātiķiem:)
Mazais Ole
2009. gada 10. novembrī, plkst. 15:06
nu es kā maz pieredzējis ģeogrāfs ar zināšanām ģeodēzijā, kas vairāk atbilst šai problēmam kā ģeometrija ;) varētu padalīties ar šo un to, kas man zināms.. bet... tas viss nemaz nav tik vnk... Jāsak jau ar to - kādā koordinātu sistēmā tev ir tās SVG kartes kordinātas... no tālākā ir divi risinājumi... bet vispār... ir formuliņa, kas strādā tieši pie tā, lai pārrēķinātu kartes kordinātas uz platuma un garuma grādiem... BP=BF+b2y2GCP+b4y4GCP+... LP=L0+b1y1EAST+b3y3EAST+b5*y5EAST+... kur BP un LP ir attiecīgi platuma un garumā grādi... bet vispār... gana sarežģīta lieta... vieglāk ir izmantot šim nolūkam radītu datorprogrammu... jāsaka tikai, ka viņa strādā vien dažās koordinātu sistēmās, kas plašāk izmantotas Norvēģijā... Ja interesē vēl kas, vari mēģināt jautāt... he he he
ivars
2009. gada 10. novembrī, plkst. 15:22
Lai SVG koordinātes korekti pārveidotu ģeogrāfiskajās ir jāzin SVG koordinātu projekcija (veids un parametri) + izmantotais t.s. datums (t.i. elipsoīda parametri + nobīde (kā zināms zeme nav apaļa)). Tāpēc, ja tas nav zināms, tad nekas ļoti precīzs nesanāks. Var pieņemt, ka izmantotā projekcija ir Latvijas lks92tm (http://spatialreference.org/ref/epsg/3059/), bet tas nav 100% droši. Formulas plaknes koordinātu pārvēršanai ģeogrāfiskajās ir atrodamas gan mācību grāmatās, gan internetā, taču lietderīgāk izmantot gatavas bibliotēkas/tooļus (piem. http://trac.osgeo.org/proj/ vai gdal). Manuprāt visjēdzīgākais problēmas risinājums būtu no GISistiem dabūt korektus shp failus (noteikti tie ir pieejami, varbūt tos var prasīt ofciālajām iestādēm), ar proj4 vai gdal tos pārveidoē ģeogrāfiskajās vai merkatora koordinātes (ko nu tas google api ņem pretī).
PS. Neesmu GISists, vienkārši kaut kad nācās risināt līdzīgu uzdevumu
modric
2009. gada 10. novembrī, plkst. 16:09
Precīzai pārrēķināšanai ar aritmētiku nepietiks... Būs tikai tuvinājumi ar zināmu kļūdu, kas ir mazāk svarīgi, piemēram, Rīgas atzīmēšanai kā punktu uz pusmiljona kartes, bet būs galīgas auzas ar tik "sīku" objektu, ka pagastu kontūru precīzu atveidošanu 5K vai vēl mazāka mēŗoga kartē.
Jau pieminētie elipsoīdi - WGS84 (izmanto lielāka daļā GPS), LKS92 (Latvijā IZGATAVOTO Latvijas karšu standarts), dažādās projekcijas - transversā Merkatora līdz 200K, lielākiem mērogiem koniskās projekcijas - tas viss ir tāds MURGS, kurā bez speciālām zināšanām nav ko darīt. To elipsoīdu vien ir simtiem (katrs reģions sev ir izrēķinājis tādus parametrus, kas vislabāk atbilst šim konkrētajam zemeslodes gabalam), un atšķiras tie minimāli, bet tomēr atšķiras. Un šī starpība lien laukā taisni tad, kad sāk gribēties kautko atzīmet ar precizitāti līdz metram(iem).
UTM zonu robeža iet caur Rīgu - līdz ar to metriskās koordinātes ir dažādas, atkarībā no tā, kurā zonā tās attēlo. Tāpēc Baltijai (LV, EE, LT) ir SAVA zona, par 3 grādiem nobīdīta, lai viena 6-grādu zona nosegtu visas valstis.
Es te varēu rakstit daudz & dikti, bet ar to, ko ātrumā atcerējos, jau laikam pietiek, lai būtu skaidrs, ka subject nebūt nav tik vienkārši paveicams uzdevums, ja to grib izdarīt precīzi, bet aptuveni - nav vērts laiku tērēt.
modric
2009. gada 10. novembrī, plkst. 18:07
Drusku parakājos... Šekureku vēl tāds - http://www.openstreetmap.org/
Ungauņi jau savus "pagastus" tur ir sazīmējuši, palūrēju tos pašus Ipiķus...
Tad vēl ir tāds OziExplorer - austrāļu kartogrāfijas sofc, kas saprot RASTRA kartes, un nupat māk izmantot arī GoogleMaps un arī augšminēto OpenStreet.
Ja kādam ir laiks to darīt:
OziExplõrerī ielādēt karti, kurā ir pagastu robežas. 2.Pārzīmēt tās kā "trace" - rezultātā ir trace-fails, itkā būtu ar GPS precīzi noiets pa šo robežu. 3.Pārslēgties uz Google (OpenStreet) un ielādēt šo trace-failu
priecāties par pagastu robežām uz Googles kartēm :)
xor
2009. gada 10. novembrī, plkst. 19:01
Te būs risinājums - novadu poligoni SHP formātā: http://priede.bf.lu.lv/ftp/Kartes_un_Plani/Latvija/kopskats/novadi.shp.7z
http://priede.bf.lu.lv/scripts/atteli/albums.cgi?d=kartes&f=6&k=kopskats/
e-remit
2009. gada 10. novembrī, plkst. 19:35
pajautāju par šo savam draugam - GISistam, šams teica, ka bezjēdzīgi mokaties. viš ieteica labāk neizmantot SVG, bet pa Ls5 nopirkt Jāņusētas kartes CD un tur visas kartes atvērtā formātā SHP formātā, ar visiem papildus atribūtiem, kā nosaukumi, skaiti, platības. SHP ir atvērts formāts nu no tā ērti iegūt visus poligonus.
salavecis
2009. gada 10. novembrī, plkst. 19:38
labi
Maruta
2009. gada 11. novembrī, plkst. 01:36
Varbūt beidzot kāds arī Dienvidu tiltu iezīmējiet? :)
archaic
2009. gada 11. novembrī, plkst. 05:28
Ui kā ar šo savulaik mocījos. Varbūt kādam ir PHP klase vai C# funkcija uzrakstīta, kas konvertē LKS92 uz WGS84 un otrādi? Kaut gan, ja kādam ir, tad viņam ir jābūt filantropam, lai dalītos, jo tas ir reāls know-how:)
jam
2009. gada 11. novembrī, plkst. 06:32
Kādu laiku atpakaļ konvertēju LKS uz GPS http://www.ikdiena.lv/2008/09/23/koordinates-lks-92-uz-gps/
imo
2009. gada 11. novembrī, plkst. 08:07
Laacz, es tevi kkā ipiķos neesmu nekad manījis ... nav noslēpums kapēc viņi tev tik mīļi? un tur nav kur noslēpties ... :P
imo
2009. gada 11. novembrī, plkst. 09:09
cik paluureeju js kartē, tad tur var redzēt kaut kādas kordinātes ... http://www.failiem.lv/thumb_show.php?i=rbhprj&n=untitled.PNG
varbūt ka pēc tām kaut ko var salīdzināt un izrēķināt ...
Mārtiņš
2009. gada 11. novembrī, plkst. 09:47
Viens no iemesliem mīlēt Ipiķus ir robeža ar Iguāniju, pie kuras uzreiz var redzēt kļūdu koordinātu sistēmā.
Pēteris
2009. gada 11. novembrī, plkst. 10:51
Un, protams, arī nosaukums!
DimanC
2009. gada 11. novembrī, plkst. 10:56
nav domas iedziļināties jūsu formulā, bet rezultāta fail acīmredzams - vismaz 30m nobīde tiem ipiķiem google kartē (attiecībā pret LV-EE robežu). wtf?
Loks
2009. gada 11. novembrī, plkst. 12:22
Maruta: http://www.openstreetmap.org/?lat=56.91771&lon=24.16428&zoom=15
Dienvidu tilts kā dzīvs :)
Pāķis
2009. gada 13. novembrī, plkst. 08:21
Tev ir novecojusi novadu karte. Rekur ir jaunākā: http://content0-foto.inbox.lv/albums113618971/martinez/foto/novadi.jpg