Delphi - A Microsoft Terra szerverének programozása

Terra Server 1. rész

forráskód letöltése
A Microsoft TerraServer szerver tartalma egy hatalmas adatbázis, amely Észak-Amerika területéről, különböző felbontású műholdas felvételeket tárol. A képek mellett az egyes települések szélességi fok és hosszúsági fok koordinátái is szerepelnek az adatbázisban. Egy kétrészes sorozat keretén belül, készítünk egy Delphi programot, amellyel lekérdezhetjük a települések adatait és a hozzájuk tartozó képeket. Az első részben megnézzük, hogy hogyan tudunk kapcsolatot létesíteni a szerverrel, és hogy hogyan kérdezhetjük le egy megadott területen szereplő települések adatait.
A példaprogram használatához aktív Internet kapcsolat szükséges.
A Microsoft működtet egy TerraServer-nek nevezett szolgáltatást, mely nem más, mint egy hatalmas adatbázis, ami hihetetlen mennyiségű képet és adatot tárol Észak-Amerika területéről.
Ez a szolgáltatás egy WebService formájában is közzétételre került. Felhasználva ezt a WebService-t, saját programunkban igen könnyedén elérhetjük ezt a képes adatbázist. Most az első részben azt nézzük meg, hogy hogyan tudunk kapcsolatot teremteni a szerverrel, és hogy hogyan kérdezhetjük le egy megadott terület adatait.
A szerver a http://terraserver.com címen érhető el. A szerver használatához szükséges információkat a következő weboldalon találjuk:
 http://terraserver.homeadvisor.msn.com/about.aspx
Hozzunk létre egy új Delphi alkalmazást.
Válasszuk a File – New – Other menüpontot. A New Items ablakban válasszuk a WebServices fület, azon belül a WSDL Importer elemet. A megjelenő ablak Location of WSDL File or URL mezőjében adjuk meg az alábbi címet:
http://terraserver.homeadvisor.msn.com/TerraService.asmx?wsdl
A fenti cím tartalmazza a szerver használatához szükséges interfészek és adatszerkezetek adatait. Kattintsunk a Next, majd a Finish feliratú gombokra.
A WSDL Importer egy varázsló, amely lekérdezi a szerver adatszerkezeteit, és a lekért adatokat elmenti egy unit-ba. A unit TerraService néven jön létre.
A Unit1-ben fel kell vennünk a hivatkozást a TerraService unit-ra.
A TerraService egységben megtalálhatjuk a használható osztályokat és adatszerkezeteket. A TerraServiceSoap osztály képezi az interfészt, alkalmazásunk és a szerver között. Hogy könnyedén fel tudjuk építeni ezt a kapcsolatot, egy függvény is a rendelkezésünkre áll. Ez a következő.
function GetTerraServiceSoap(UseWSDL: Boolean=System.False; Addr: string=''; HTTPRIO: THTTPRIO = nil): TerraServiceSoap;
A Unit1-ben létre kell hoznunk egy változót.
public
    FTerra: TerraServiceSoap;
A Form1 OnCreate eseményben létesítünk kapcsolatot a szerverrel.
FTerra:=GetTerraServiceSoap(False,'',Nil);
A szerverről lekért adatokat a Temp.db nevű adattáblába mentjük el. A tábla Paradox 7 típusú. A következő mezőkkel rendelkezik:
Mezőnév Típus Hossz
City Alpha 50
State Alpha 50
Country Alpha 50
Longitude Number -
Latitude Number -
A Form1-en elhelyeztünk két Edit kompon-enst. Az Edit1 mezőben adjuk meg a lekérdezendő terület nevét, az Edit2-ben pedig a szerverről lekérdezett lista elemeinek maximális számát.
A települések adatainak lekérdezését a Button1 OnClick eseményében hajtjuk végre, a GetPlaceList metódus segítségével.
Places:=FTerra.GetPlaceList(Edit1.Text,UpDown1.Position,True);
A GetPlaceList metódus első paraméterében kell megadnunk a lekérdezendő terület nevét. A második paraméter a lekérdezendő elemek maximális számát határozza meg. A szerveren olyan települések adatai is szerepelnek, amelyekről nem található kép. Ha az utolsó paraméterben True értéket adunk meg, akkor csak olyan települések adatait kérdezzük le, amelyekről kép is található a szerveren.
A Places egy ArrayOfPlaceFacts típusú, dinamikus tömb. A tömb elemein egy for ciklus segítségével könnyedén végigmehetünk. A tömb elemei egyenként PlaceFacts típusúak. A város, az állam és az ország nevét a Place, a koordinátákat a Center property-n keresztül érhetjük el
FieldByName('City').AsString:=Places[i].Place.City;
. . .
FieldByName('Longitude').Value:=Places[i].Center.Lon;
A Lon (Longitude) jelentése hosszúsági fok, a Lat (Latitude) pedig a szélességi fokot jelenti.

Terra Server cikksorozat

A Microsoft Terra szerverének programozása - Terra Server 1. rész

A Microsoft Terra szerverének programozása - Terra Server 2. rész