WebMapping cu MapXtreme
Eugen Cretu
Geo Strategies SA, Sibiu
MapXtreme este un produs software al firmei de desktop mapping MapInfo, gândit sub forma unui instrument
de dezvoltare aplicaţii client-server, ce permit programatorilor de aplicaţii Web să creeze
pagini interesante, prin adăugarea harţilor interactive în pagini. El se bazează pe nucleul
MapInfo MapX care este o biblioteca excelenta de gestiune si manipulare harţi. Pe baza acestei
biblioteci este construit si MapInfo Professional, software-ul de desktop mapping.
Pachetul software conţine un mediu de dezvoltare aplicaţii Web, numit HahtSite, orientat pe
posibilitatea adăugării de cod intr-un limbaj clasic (JScript, VBScript) sau in HahtTalk Basic -
un limbai asemănător Basic-ului. Astfel, paginile create in HahtSite beneficiază de
avantajele unui limbaj cele programare de nivel înalt, flexibil, cu multe facilităţi.
Cum funcţionează?
Pentru a putea crea pagini dinamice ce conţin hărţi MapXtreme, avem nevoie de câteva
module care lucrează împreuna cu serverul de Web. Acestea sunt de două tipuri: instrumente de
dezvoltare şi soft pentru server.
MapXtreme foloseşte ca instrument de dezvoltare un produs de la HahtSite Inc. şi anume HahtSite
Integrated Development Environment, aflat pe calculatorul unde se dezvoltă aplicaţia de Web. Odată
creat proiectul de Web pe calculatorul gazdă, el este publicat prin copiere (Intranet) sau via FTP
(Internet) pe host-ul unde se va afla în final.
Din punct de vedere al proiectantului de aplicaţii, mediul HahtSite este un instrument de dezvoltare
vizual, extrem de plăcut. Printre caracteristicile ce-l propulsează printre cele mai apreciate
produse de acest fel, menţionăm câteva: suport controale, frame-uri, forme, un editor de imagini
performant, permite inserarea de scripturi Jscript şi VBScript şi posedă un limbaj propriu de
CGI-uri, numit HahtTalk Basic.
În categoria de software de server trebuie amintite componentele ce se execută în conjuncţie
cu serverul de Web,
aşa cum ilustrează exemplul de specificare a unei instrucţiuni HahtTalk într-o pagină
Web:
<BODY BACKGROUND = "backgrnd.gif">
<P><SCRIPT LANGUAGE=HAHTSite HAHTCONTEXT=statement>
<!- Call BrowseTable -></SCRIPT></P>
</BODY>
Tot în această categorie mai intră MapX (modulul de bază al lui MapXtreme), Remote
Geocoder (modulul de geo-codare hărţi), serverul de aplicaţii HahtSite şi
administratorul serverului de aplicaţii.
După cum se poate observa în exemplul anterior, o cerere client ce conţine specificaţii
HahtTalk este preluată de către serverul de aplicaţii şi rezultatul este returnat, via
serverul de Web, clientului. Cheia întregului proces o constituie însă posibilitatea de comunicare între
serverul de aplicaţii şi map engine-ul MapX.
Nucleul MapX
MapXtreme instalează MapX, sub formă de control ActiveX. Cu acest control, se pot adăuga
facilităţi de mapping unei game largi de programe care suportă astfel de controale.
Pentru HahtTalk, varianta interfeţei în Basic a lui MapX vine cu MapXtreme. MapInfo foloseşte
modelul logic al lui MapX în map engine-ul lui MapInfo Professional, unde rezultatele sunt remarcabile în
ceea ce priveşte rapiditatea şi calitatea răspunsului.
 |
Ierarhia claselor in MapX
|
Clasele cele mai importante care alcătuiesc aceasta colecţie sunt: CMap ( harta cu proprietăţile
ei legate de afişare, zoom, center, scale), CDataSet (se referă la baza de date asociată hărţii,
bază ce poate fi accesată via ODBC), CLayer (stratul de informaţie grafică), CAnnotation
(stratul de adnotări făcute de user), CStyle (gestionează stilul tuturor parametrilor
grafici: font, culoare, lăţime linie, tip umplere, etc.).
Harta permite diferite operaţii grafice afară de cele legate de afişare: etichetare,
selectare/vizualizare layer, creare hartă tematică, creare legendă.
Exemplu de program care afişează o hartă
Pentru că MapX este un control, el vine instalat cu două utilitare distincte:
- BaseMap Data Manager, care setează directoarele unde dicţionarul MapX va reţine
fişierele cu hărţi
- GeoSetManager, creează şi setează dicţionarul lui MapX colecţiile de
tabelă (layere) ce alcătuiesc o hartă, noua denumire "geoset" fiind omoloagă
celei de "workspace" din MapInfo.
Odată cunoscute geo-seturile înregistrate în MapX, acestea sunt gestionate la cerere de către
controlul ActiveX, prin intermediul programului de interfaţă HSRUN.EXE (HahtSite Run Time) apelat
din pagina Web cu parametrii.
Presupunând că avem un control cboMaps tip ComboBox cu opţiunile reprezentând geoset-urile
din MapX, în pagina de Web va apela rutina HahtBasic OpenGeoset care încarcă harta pentru, ca mai
apoi, subrutina CreateMap să producă fişierul grafic ce reprezintă harta. Codul HahtTalk
al acestor subrutine este prezentat în listing-ul alăturat.
Undeva în pagina de Web vom avea următoarele instrucţiuni HahtTalk:
|
......
Call OpenGeoSet
......
Print "<IMG SRC =""map1.gif""WIDTH = 490 HEIGHT = 300>"
......
|
De exemplu, o căutare în layer-ul "Gazeteer" după numele "Sea" poate fi
realizată simplu cu funcţia Search:
|
......
' Variabila ftrFound va contine rezultatul cautarii
Set strFound = g_objMap.Layers("Gazeteer").Find.Search("Sea","")
If (ftrFound.FindRC = 1) Then
' CenterX si CenterY sunt coordonatele centrului pentru obiectul gasit
db1X = ftrFound.CenterX
db1Y = ftrFound.CenterY
......
|
Concluzii
O soluţie flexibilă, excelentă pentru platformele Windows, MapXtreme se pretează
foarte bine la implementări Intranet. Faptul că lucrurile se mişcă într-un ritm rapid,
îl face pe MapInfo promotor de idei în domeniu. Dovadă este şi versiunea anunţată, cu
server şi client 100% Java, care îi conferă independenţa de platformă (vedeţi
şi http <// www. mapxtreme.com). Dar, despre aceasta, într-un articol viitor.
Codul HahtTalk al subrutinelor Create Map si OpenGeoset
Global g_objMap. 9_objMapXserver As Object
Global g_strGeoSet As String
'-----------------
Sub OpenGeoSet
Dim stDataset As String
Dim bErr As Boolean
On Error GOTO ErrHandler
'Retine in stDataset numele geosetului selectat
stDataset = LTrim$(Rtrim$(WebApp.URLFIELD$("cboMaps")))
if(stDataset<>"") Then
g_strCurrentDataset = stDataset
End If
g_strGeoSet = g_strCurrentDataset & ".GST"
'Creaza in MapX reprezentarea harti curente
CreateMap
'Exporta harta la zoom-ul si scala specificate
g_objMap.ExportMap "mapl.gif", miFormatGIF
Exit Sub
'-----------------
Sub CreateMap()
Dim objLayer As Object
Dim objNDS As Object
'Creaza obiectele MapX (server si clienti)
#If USE_MAPXSERVER_OBJ, Then
Set g_objMapXserver =
createObject(fnObjectMapXserver)
Set g_objMap = g_objMapXserver.GetMapX
#Else
Set g_objMap = CreateObject(fnObjectMapX)
#End if
' Seteaza parametrii hartii
g_objMap.GeoSet = g_strGeoSet
g_objMap.Zoom = 100
g_objMap.TitleText = ""
' Pentru fiecare layer selectabil incarca atributele sale pentru ulterioare interogari
For Each objLayer In g_objMap.Layers
If obj_Layer.Selectable Then
Set
objDS = g_objMap.DataSets.Add(miDataSetLayer, objLayer, objLayer.Name
End If
Next objLayer
End Sub |
PC Report, Byte
Ianuarie 1999
|
|