---
title: Ipiķi un citi
date: 2009-11-11 14:54:39 +0200
updated: 2009-11-11 20:03:28 +0200
---

Vakardienas izpēte un jūsu komentāri rezultējās ar nežēlīgiem panākumiem.

Tātad, pētot un domājot kļuva skaidrs tas, ka problēma ir ar izejas datiem. Procesa laikā noskaidroju, kas tad galu galā ir *shapre* faili, un kāda tajos ir informācija. Ātri uzmeklējot devīgajos internetos failus “pagasti.shp” un “novadi.shp”, tie nokļuva manā rīcībā. Šajos failos, kā izrādās, ir visa nepieciešamā informācija (poligoni, kuri apraksta pilsētu, pagastu, novadu robežas) UTM koodrināšu sistēmā.

Tālākais jau bija tehnikas jautājums. UTM koordinātas ir iespējams pārkonvertēt uz platuma un garuma grādiem, ja zin to projekciju, kura izrādījās esam WGS84. Izmantojot mazu utilītu [ogr2ogr](http://www.gdal.org/ogr2ogr.html "OGR2OGR") tika iegūts XML fails ar nepieciešamajām koordinātām man vajadzīgajā formātā. Fiksi uzmetot Ipiķus uz Gūgles kartes, viss izskatījās dievīgi (ar daždesmit metru nobīdi dažviet, bet tā nav problēma).

Tālākā iterācija problēmai ir sekojoša. Izmantojam *MySQL* *Spatial* paplašinājumus, lai iestumtu datubāzē kā novadu robežas, tā pagastu un pilsētu robežas. Teorijā pēc tam var jebkuram punktam pateikt, kur tas atrodas. Diemžēl praksē MySQL GIS funkcionalitātes iespējas ir gauži ierobežotas un problemātiskas. Piemēram,

``  laacz@skapis[gis]>  -- Kur ir Ipiķi? SET @ipiki = GeomFromText('POINT(58.0093006 25.1778021)'); SELECT      Within(@point, g) AS `within`,      name,      type FROM     gis  WHERE      Within(@ipiki, g) = 1; +--------+------------+---------+ | within | name       | type    | +--------+------------+---------+ |      1 | Ipiķu      | pagasts | |      1 | Mazsalacas | novads  | |      1 | Rūjienas   | novads  | +--------+------------+---------+ 3 rows in set (0.00 sec) ``

Lieki piebilst, ka Mazsalacas novads nepārklāj Ipiķu atrašanās vietas punktu nevienā acī, bet MySQL tā nedomā. Tas gan nenozīmē, ka es vaļasbrīžos neturpināšu cīņu :)

++Papildināts 21:58++. Izrādās, ka *MySQL* (vēl aizvien arī tekošajā 5.1 GA versijā) operē nevis ar poligoniem, bet gan ar taisnstūriem, kuri šos poligonus pilnībā ietver (*bounding rectangles*), kā rezultātā neder. *PostgreSQL* izmantot tikai šiem nolūkiem neredzu jēgu. Tiesa, [cilvēki strādā pie tā](http://forge.mysql.com/wiki/GIS_Functions "GIS Functions - MySQL Forge Wiki"), lai *MySQL* ieviestu pilnvērtīgu *OpenGIS* atbalstu, bet, kā jau *MySQL* pierasts, tādas lietas nāk ļoti, ļoti lēnām (konkrēti - anonss par testēšanu ir 2 gadus vecs)...
