Tag Archives: Database

Multiple redigerbare overlays til Google Maps API

Jeg har dags dato lagt sidste hånd på et lidt spændende proof-of-concept eksperiment. Vi skal til en opgave kunne vise valgfrie polygoner over et zoombart verdenskort. Disse opsatte og redigerbare kort-koordinat polygoner (længde og breddegrader) skal derefter nemt kunne anvendes som søgekriterier i en MS SQL database indeholdende en datatabel med blandt andet en GPS koordinat kolonne.

Google Maps virkede som et fornuftigt udgangspunkt hertil, så der gik jeg igang.

Den indledende øvelse, du kan se resultatet af herunder, gik på at lave en minimalistisk webside hvor en bruger nemt kan opsætte en eller flere regioner og her skal være istand til at redigere og slette disse. Polygonerne skal slutteligt kunne “oversættes” til en række kort-koordinater til den videre database behandling (der ligger udenfor proof-of-concept eksemplets omfang).

Multiple redigerbare overlays til Google Maps...

Prøv selv dette eksempel med multiple editerbare overlays.

Hvert polygon brugeren definerer i ovenstående eksempel kan udtrækkes på JSON form, indeholdende alle koordinater som længde- og breddegrader, som for eksempel:

{
  'points': [
    { 'lat': 55.70685277146149, 'lng': 12.535314559936523 },
    { 'lat': 55.70685277146149, 'lng': 12.538447380065918 },
    { 'lat': 55.70571631025774, 'lng': 12.540678977966308 },
    { 'lat': 55.705184338337496, 'lng': 12.538447380065918 },
    { 'lat': 55.70426546069018, 'lng': 12.53763198852539 },
    { 'lat': 55.705184338337496, 'lng': 12.535314559936523 },
    { 'lat': 55.70685277146149, 'lng': 12.535314559936523 }
]};

Disse koordinat data kan nu anvendes server-side som søgekriterier i MS SQL 2005, for eksempel ved brug af MsSqlSpatial udvidelsen. Eksempler på MS SQL GIS data indsættelse og forespørgsler findes på MsSqlSpatial siden. MS SQL 2008 har indbygget understøttelse af GIS datatyper og søgning heri – Geometry (planar) og Geography (geodetic).

MS SQL tilgang fra Ruby og Watir

Watir er et framework til automatiserede unit tests af webapplikationer ved brug af et automatiseringslag rettet imod Internet Explorer. Der er tiltag igang for at kunne benytte Watir i Firefox og Safari browserne.

I forbindelse med implementering af adskillige unit tests for en kunde opstod behovet for at kunne checke både datamodel og web-snitfalde imod hinanden. Dataene for de web applikationer der løbende skal kunne testes er placeret i en større SAN baseret MS SQL database.

Ruby har et helt fortrinligt database API, kaldet dbi, som kan anvendes til formålet. Man skal blot installere en ADO wrapper først, da denne ikke som standard medfølger seneste Ruby installationspakke (v186-26). Dette gøres ved først at hente denne dbi pakke indeholdende alle wrappere:
http://rubyforge.org/frs/download.php/655/ruby-dbi-all-0.0.23.tar.gz.

Udpak herfra filen “ruby-dpi-all/lib/dbd_ado/ADO.rb” og kopier denne fil til en nyoprettet “ADO” mappe i din Ruby installationssti, således den endelige placering for wrapper filen bliver “/lib/ruby/site_ruby/1.8/DBD/ADO/ADO.rb”.

Det er sådanset alt der skal til. Du er nu istand til at tilgå MS SQL databaser fra Ruby, og dermed også fra Watir.

Eksempel:

require 'test/unit'
require 'watir'
require "dbi"

ConnectionString =
  "Provider=SQLOLEDB;" +
  "Data Source=DBSOURCE;" +
  "Initial Catalog=CATALOG;" +
  "User ID=USERNAME;" +
  "Password=PASSWORD;" +
  "Application name=RubyWatir;" +
  "Connection Timeout=0"

class MyTestClass < Test::Unit::TestCase
  ...
  def test_database
    ...
    db = DBI.connect("DBI:ADO:" + ConnectionString)
    sql = "select product, price, description from t_products"
    sth = db.prepare(sql)
    sth.execute
    row = sth.fetch
    puts row
    product = row[0]
    price = row[1]
    description = row[2]
    sth.finish
    db.disconnect
    ...
   end
   ...
end