• No results found

Geografisk presentation i ett mikrosimuleringsverktyg

N/A
N/A
Protected

Academic year: 2021

Share "Geografisk presentation i ett mikrosimuleringsverktyg"

Copied!
25
0
0

Loading.... (view fulltext now)

Full text

(1)

EXAMENSARBETE

2004:012 HIP

HÖGSKOLEINGENJÖRSPROGRAMMET

Geografisk presentation i ett mikrosimuleringsverktyg

MATS SUNDBERGH

(2)

Förord

Så var den äntligen klar! Rapporten av mitt examensarbete.

Examensarbetet genomfördes på SMC, Spatial Modeling Centre, i Kiruna under våren och sommaren 1999. Arbetet omfattar 10 högskolepoäng och är den avslutande delen i GIS- ingenjörsprogrammet vid Luleå tekniska universitet.

På grund av engagemang i Teknologkåren vid Luleå tekniska universitet ”försvann” ett år och lämnade kvar frågan om när jag skulle skriva denna rapport. De första åren utanför den akademiska världen slutade på samma sätt. Hur som helst här är den. Trots glappet har nutid i denna rapport stannat i tiden för examensarbetet, våren 1999.

Jag vill tacka alla de som hjälpt mig under mitt arbete, och då särskilt min handledare Jonny Siikavaara, Kiruna Softcenter, samt Johan Esko, SMC, som nog är de som drabbades mest av mina frågor och funderingar.

Stockholm, februari 2004 Mats Sundbergh

(3)

Sammanfattning

Samhällsgeografiskt miljöcentrum (Spatial Modelling Centre), SMC, bedriver forskning och utveckling av datorbaserade geografiska modeller. Syftet är att stödja uppdragsgivaren, Kulturgeografiska institutionen vid Umeå universitet, och andra med dessa verktyg. Med hjälp av den egenutvecklade modellen SVERIGE kan man göra experiment i full skala med en syntetisk population som motsvarar hela Sveriges befolkning.

Detta examensarbetes syfte var att ta fram möjlighet till geografisk presentation för den grafiska klienten till SVERIGE. Detta som ett komplement till de tabeller som genereras vid körningar av modellen. Detta gjordes i form av en ActiveX-komponent skriven i Visual Basic 6.0 och med komponentbiblioteket MapObjects 1.2 från ESRI.

Målen uppfylldes delvis. Resultatet blev en ActiveX-komponent med en begränsad

funktionalitet och i vissa fall låga prestanda. Man kan endast visualisera data med hjälp av en koropletkarta. Dock kan man se detta som ett första förslag och diskussionsunderlag inför framtida utveckling av GIS-stöd för SVERIGE.

(4)

Abstract

Spatial Modelling Centre, SMC is affiliated to the Department of Social and Economic Geography at Umeå University. SMC's role is to carry out research and development of computer based geographical models. The main work is a model that describes the Swedish population at an individual level. This model, called SVERIGE, makes it possible to carry out full-scale experiments with a synthetic population representing the inhabitants of Sweden.

The aim of this undergraduate project was to develop geographic presentation for the GUI- client of SVERIGE as a complement to tables generated when running the model.

Manufacturing an ActiveX component written in Visual Basic with support of ESRI MapObjects 1.2 carried this out.

The goals were partially fulfilled. The resulting ActiveX component has a limited functionality and in some concerns poor performance. It can only visualize data using a choropleth map. However, one can see this component as a first proposal and a basis for discussion on future development of GIS capabilities for SVERIGE.

(5)

Innehållsförteckning

Förord... 2

Sammanfattning ... 3

Abstract ... 4

Innehållsförteckning ... 5

Inledning ... 6

Bakgrund Syfte Mål Avgränsningar Metod... 7

Resultat... 8

SpaPres Användarens vinkel SMC:s mikrosimuleringsverktyg SVERIGE Värdapplikationens vinkel Under huven SPTest Diskussion ... 13

Slutsats... 14

Källförteckning... 15

Bilaga 1, Enkel API-dokumentation för SpaPres... 16

(6)

Inledning

Bakgrund

Spatial Modeling Centre, SMC, är en forskningsinstitution i Kiruna som främst verkar inom mikrosimulering och hur man tillämpa denna teknik. Mikrosimulering innebär att man bygger upp detaljerade modeller över till exempel Sveriges befolkning. Dessa modeller används för att köra simuleringar av vad som händer varje individ med avseende på boende, arbete, familjebildning, utbildning och andra parametrar. För detta syfte har SMC skapat ett eget mikrosimuleringsverktyg då de få tillgängliga programvarorna inte uppfyllde de krav man hade.

Idag är alla resultat i tabellform och diagramform och det kan därför vara svår att få en överblick över hur de olika regionerna påverkas. Ett sätt att öka överblickbarheten är att ha någon form av geografisk presentation i mikrosimuleringsverktyget, det vill säga en karta där resultatet presenterat på något lämpligt sätt.

Syfte

Att utöka mikrosimuleringsverktyget med geografisk presentation, för att öka överblick- barheten och ”känslan” för hur resultatet fördelar sig mellan de olika regionerna.

Mål

Att framställa en så kallad ActiveX-komponent som sedan kan integreras i klientdelen av SMC:s mikrosimuleringsverktyg. Denna komponent ska innehålla funktionalitet för att presentera data i geografisk form. Presentationen bygger på att visa data för de olika regioner som mikrosimuleringsverktyget producerar data för. För SVERIGE används SCB:s arbets- regioner som består av en eller flera kommuner där regionen kan ses som en lokal arbets- marknad. Även enklare ”visuella” analyser ska kunna genomföras, såsom urval och enklare överlagringar.

Alla data som ska presenteras skickas till komponenten från mikrosimuleringsverktyget som kan ses som en ”värdapplikation” för den utvecklade ActiveX-komponenten. Mikro-

simuleringsverktyget presenterar sina resultat år för år, och därför ska även den geografiska presentationen visa data år för år och kunna låta användaren välja vilket/vilka år som presenteras för stunden.

Avgränsningar

ActiveX-komponenten ska i första hand användas som ett så kallat tittskåp och alltså inte innehålla någon mer avancerad funktionalitet än att visa data geografiskt. Arbetet ska inte heller fokusera på den faktiska integreringen av komponenten i mikrosimuleringsverktyget.

(7)

Metod

Den använda utvecklingsmiljön är Microsoft Visual Basic 6.0 med komponentbiblioteket ESRI MapObjects 1.2.

MapObjects tillhandahåller funktionalitet för att visa kartbilder. De geografiska data som ligger till grund för kartbilden kan bland annat hämtas från så kallade shape-filer, ett filformat som är utvecklat av ESRI och bland annat används i ArcView.

(8)

Resultat

Den slutliga ActiveX-komponenten som skapades fick namnet SpaPres efter Spatial Presentation, rumslig presentation. Den innehåller inte alla de olika presentations-

möjligheterna som fanns som idéer innan eller i början av examensarbetet. Det som SpaPres dock kan är att visa numeriska data för olika regioner som en koropletkarta.

För att kunna testa och finslipa SpaPres så skapades även en testapplikation med det föga upphetsande namnet SPTest. Denna applikation har inte så många andra användningsområden än att testa och visa hur SpaPres fungerar. Dessutom skapades en shape-fil med SCB:s

arbetsregioner från en shape-fil över Sveriges kommuner samt en tabell över arbetsregions- indelningen.

SpaPres

ActiveX-komponenten SpaPres innehåller tre huvuddelar; kartbild, mittkontroller och förklaring:

Figur 1 ActiveX-komponenten SpaPres och de olika delarna

Om man går in lite mer i detalj på de enskilda delarna så är dessa:

• Map – Karta Den aktuella koropletkartan.

• Toolbar – Verktygsfält I tur och ordning, verktygsknappar för identifiering, inzoomning, utzoomning och panorering samt en kommandoknapp för att visa hela kartan.

• Yearbox – Årsval En kombobox med som visar vilket år som visas i kartan samt vilka år som data blivit inlästa för.

• Infobar – Statusfält Visar aktuell skala samt namn och aktuellt värde för det område som valts med identifieringsverktyget.

• Legend – Förklaring Visar vilka färger som används för koropletkartans olika klasser samt gränsvärdena mellan klasserna.

Förutom dessa för användaren synliga delar så är det upp till ”värdapplikationen” att förse SpaPres med sökväg till shape-fil, data för respektive år samt enklare hantering av

förklaringen. Det finns även en hel del metoder och egenskaper som alltid skapas för en ActiveX-komponent. Dessa styr till exempel storlek och om komponenten ska var synlig eller ej.

(9)

Användarens vinkel

En tanke med användargränssnittet var att det skulle vara enkelt att förstå och lätt att arbeta med. Om användaren någon gång sett en GIS-applikation av något slag, så ska man kunna arbeta med SpaPres utan att behöva särskild handledning i hur gränssnittet fungerar.

SpaPres innehåller så pass begränsad funktionalitet att jag inte behövt lägga ner så mycket tid för att öka användarvänligheten. Det som går att göra är att välja vilket år som ska visas,

”förflytta” sig i kartan genom zoomning och panorering samt ta reda på namn och värde för intressanta områden.

SpaPres är ett betydligt mer lättöverskådligt sätt att presentera regiondata än enbart tabeller.

En förutsättning är förstås att aktuella data lämpar sig för koropletkartor. Man kan zooma och panorera sig så att intressanta områden visas i karfönstret. Det går att relativt enkelt få reda på de exakta värdena för respektive region. Om data för flera olika år har blivit inlästa kan man enkelt välja vilket år som ska visas.

Det hade även varit önskvärt att användaren skulle ha kunnat ändra klassindelningen per klass samt vilka färger som används. Nu har värdapplikationen en något begränsad möjlighet att ändra klassindelningen respektive färgval. En annan nagel i ögat för användaren är att det tar cirka 5-8 sekunder när man vill visa data för ett annat, redan inläst, år. Detta gällde

åtminstone på den dator som användes för utvecklingen, med Sverige indelat i 108 regioner.

SMC:s mikrosimuleringsverktyg SVERIGE

För att bättre förstå i vilket hur SpaPres i första hand var tänkt att fungera kan det vara bra med en kort genomgång av SMC:s egenutvecklade mikrosimuleringsverktyg SVERIGE.

Applikationen består av en klient och en server samt en databas. Alla dessa delar kan ligga på samma fysiska dator, men kan även delas upp på tre skilda maskiner för att bland annat öka prestanda.

Klienten låter användaren definiera upp enskilda körningar, så kallade experiment. Det är allt från generella parametrar som vilket start- och slutår experimentet ska ha till mer detaljerade modellparametrar som hanterar hur till exempel civilstånd påverkar en individs benägenhet att börja Komvux. Det är från klienten som användaren sedan startar och kan följa experimentet under körningen, för att slutligen kunna se resultaten från körningarna. I klienten visas resultatet i aggregerad form och inte på individnivå. Man kan även se sparade resultat från tidigare körningar.

Serverns uppgift är att göra hästjobbet att beräkna hur ”livet” ser ut för varje individ i experimentet. Detta görs genom att varje individ körs genom de moduler som bygger upp mikrosimuleringsmodellen. Detta upprepas för varje år som experimentet sträcker sig över.

Modulerna är ansvariga för att göra beräkningar på ett specifikt område av en individs status.

Det finns som exempel en modul för fertilitet, som hanterar sannolikheten att en individ skaffar barn.

Databasens uppgift är att vara lagringsplats för dels ett experiments parametrar, dels resultatet. Databasen är en Access-databas som man kopplar upp till med ODBC, för att kunna läsa och skriva data.

Det stora arbetet med att ta fram SVERIGE har varit att hitta lämpliga beskrivningsmodeller för vad som påverkar livets skeenden; vilka faktorer påverkar sannolikheten att en viss händelse sker samt hur och till vilken grad dessa faktorer påverkar. Detta har sammanställts i matematiska modeller som beräknar sannolikheter för de enskilda händelserna. Dessa har sedan kontrollkörts i verktyget mot statistik från SCB för att verifiera och vid behov modifiera de matematiska modellerna.

(10)

Värdapplikationens vinkel

ActiveX-komponenten SpaPres utvecklades för SMC:s mikrosimuleringsverktyg SVERIGE.

Det gör att det är SVERIGE:s arkitektur som fått bestämma utformningen av SpaPres. Värd- applikationen, det vill säga det program som ska använda SpaPres, använder sig av ett gränssnitt till SpaPres som består av ett antal metoder (funktioner och procedurer) och egenskaper (parametrar). Samtliga metoder och egenskaper finns i bilaga 1, som är en enkel API-dokumentation för SpaPres.

SpaPres har tre olika huvudtillstånd som den kan befinna sig i; Tom, Karta samt Data. Hur dessa tillstånd hänger ihop förklaras i figur 2. Förutom dessa kan man även fortsätta att ladda data när SpaPres är i tillståndet Data, dock får man bara ladda ett visst år en gång (om man inte rensar data mellan).

Tom Karta Data

Ladda karta Ladda data Rensa data Rensa allt

Rensa allt

Figur 2 SpaPres olika huvudtillstånd och transitionerna mellan dessa

Förutom de centrala operationerna att välja shape-fil och förse SpaPres med data så finns det en del annat smått och gott som värdapplikationen kan göra med SpaPres. Förutom de standardiserade metoderna och egenskaperna som storlek, synlighet med flera så finns det även hantering för att ändra klassindelningen samt vilka färger som används.

En koropletkarta bygger på att man med hjälp av färgade polygoner visar de värde som respektive område har. En central del i framställandet av en koropletkarta är därför klassindelningen samt att välja symbol och/eller färg för dessa klasser. Det finns dock lite begränsningar när det gäller klass- och färgval i SpaPres.

Antalet klasser kan varieras från fyra till tolv. Det går bara att bestämma den första respektive sista klassgränsen, övriga gränser läggs på jämna intervaller mellan dessa två. Möjligheterna för färgval är liknande, man väljer färg för första respektive den sista klassen. Övriga klassers färg beräknas av MapObjects med en så kallad RampColor-funktion, det innebär att

mellanliggande färger väljs så att det bildas en jämn färgskala mellan start- och slutfärg.

Det är helt upp till värdapplikationen att antingen manipulera SpaPres helt själv eller låta användaren påverka beteendet.

(11)

Under huven

Förutom att användaren och värdapplikationen har sina uppfattningar om SpaPres, så händer det en del ”internt” i komponenten. Man kan se SpaPres som en anpassad paketering av MapObjects funktionalitet. Värdapplikationen får ett enklare gränssnitt mot den geografiska presentationen, men till kostnaden av att inte kunna styra lika detaljerat som om man använt MapObjects ”direkt”.

Värdapplikation

Användare Kart-

komponent

Lagrings- matris Filsystem/

Shape-fil

Figur 3 SpaPres viktigaste block

Om man bortser från generella egenskaper och metoder som alltid används i samband med ActiveX-komponenter (storlek, placering med mera) så är laddningen av kartan det första som händer med SpaPres (om inte, så genereras ett fel). SpaPres försöker hitta den angivna shape- filen och öppna den. Därefter skapas ett lager som sedan läggs till kartbilden och

lagringsmatrisen skapas. Till sist sätts egenskaper som talar om vilken karta som är laddad, hur många områden/regioner den innehåller samt vilka ID dessa områden har. Vilka krav om finns på shape-filen återfinns i bilaga 1.

När värdapplikationen lagrar data för ett år så kollar SpaPres att det finns en karta laddad, att det angivna året inte redan finns i lagringsmatrisen samt att antalet fält stämmer med antalet områden i kartan. Data skickas till lagringsmatrisen och till kartkomponenten, det sistnämnda sker genom att uppdatera det fält som innehåller datavärden i shape-filen för samtliga

regioner. Till sist uppdateras komboboxen för laddade år och klassgränser justeras vid behov.

När värdapplikationen begär rensning av data så nollställs värdet för alla områden i shape- filen, lagringsmatrisen töms på data. När allt rensas så görs först en rensning av data innan shape-filen tas bort från kartkomponenten och lagringsmatrisen töms. Förutom nämnda huvudsteg finns även hantering av användarens kommandon, förklaringsrutan och kartskala.

SPTest

En väldigt viktig fas i all systemutveckling är testning och efterkommande buggrättning. Det finns nästan alltid något fel i en ny- eller vidareutvecklad programvara. För att testa en ActiveX-komponent som innehåller någon form av gränssnitt gentemot värdapplikationen så måste man skapa en värdapplikation som använder sig av komponenten. Denna

testapplikation kan i sig vara en ActiveX-komponent, som kan köras i till exempel Internet Explorer, eller så skapar man ett helt fristående program. För SpaPres valde jag det senare och döpte värdapplikationen för testning till SPTest.

(12)

Figur 4 Testapplikationen SPTest

Användargränssnittet i SPTest består av två delar där den ena är SpaPres och den andra de kontroller som låter användaren manipulera SpaPres utifrån ett värdapplikationsperspektiv.

SPTest är tänkt att användas i första hand i samband med utveckling och testning. I andra hand kan den även användas i demonstrationssyfte och som hjälp vid integration av SpaPres i en värdapplikation.

De fem knapparna som sitter ihop till vänster i SPTest, hanterar övergångarna mellan de olika huvudtillstånden hos SpaPres. De data som skickas till komponenten slumpas mellan angivna min- och maxvärden. Övriga kontroller, i den nedre delen, hanterar de egenskaper för SpaPres som inte är generella för ActiveX-komponenter.

Även en testapplikation som SPTest ska ju också testas, men ibland lyckas man inte hitta alla fel. Kända fel hos SPTest är bland annat att det måste vara exakt 108 områden som används i shape-fil och data. Eftersom SCB har definierat upp Sverige i 108 arbetsområdesregioner, så vållade detta fel inga större problem under testfasen av SpaPres.

(13)

Diskussion

Efter mycken möda finns så ActiveX-komponenten som tillhandahåller geografisk presentation; SpaPres. Dock finns det en del brister och problem med komponenten. Den grundläggande begränsande faktorn i examensarbetet har varit tid. Nästan all system-

utveckling innebär att man sätter upp tidsramar som på ett eller annat sätt begränsar resultatet, detta har även drabbat SpaPres.

Hur skulle då SpaPres kunnat bli bättre med obegränsade resurser i tid? En hel del faktiskt, det finns både större delar och små detaljer som helt klart skulle kunna vara bättre. Men den perfekta världen, utan tidsbegränsningar, finns inte. Därför finns det här en del saker att tänka på vid integrering och eventuell vidareutveckling av SpaPres:

• Svarstiderna vid laddning av data respektive byte av år bör minskas. Under

testningsfasen tog det 5-8 sekunder innan kartbilden ritades om med de nya värdena.

Detta hänger troligen på MapObjects 1.2 och hanteringen av shape-filer. När man ska ändra de data som visas ändras värdefältet för alla poster i shape-filen.

• Möjlighet att ändra bakgrundsfärger bör skapas. I dagsläget går det inte att sätta en bakgrundfärg för komponenten.

• Möjlighet för värdapplikationen att hämta vilka år som lagrats samt data för dessa bör skapas. Det borde vara möjligt att hämta information om för vilka år det finns lagrade data i SpaPres. Det borde även gå att hämta dessa data.

• Öka möjligheterna till klassindelning och färgval. För att bättre kunna skräddarsy kartan efter önskemål så borde användaren eller värdapplikationen kunna styra såväl klassindelning som färgval mer detaljerat.

• Den shape-fil som SpaPres använder bör bara användas av en instans i taget. Eftersom SpaPres använder shape-filen för att lagra de värden som ska visas i kartan så kan detta ge upphov till ett konstigt beteende om flera instanser av SpaPres använder samma fil samtidigt.

• Att bara ha en koropletkarta med olika färger innebär en viss begränsning i användningssätten. Andra former av geografisk presentation skulle öka SpaPres

”användningsvänlighet”.

• Det borde gå att jämföra data från två år, och från denna jämförelse kunna visa en koropletkarta på lämpligt sätt.

(14)

Slutsats

Målet med examensarbetet var att skapa en ActiveX-komponent som skulle kunna tillföra geografisk presentation till SMC:s mikrosimuleringsverktyg SVERIGE. Denna presentation skulle bygga på SCB:s arbetsområden och även innehålla enklare analyser.

ActiveX-komponenten SpaPres finns i fungerande skick och en shape-fil med

arbetsregionerna är framtagen. SpaPres har funktionalitet för geografisk presentation samt hantering av data från flera år, dock finns det en del kända problem och brister hos

komponenten. Identifieringen av ett område och presentationen av dess exakta värde är det närmaste en visuell analys SpaPres kommer.

Slutsatsen blir att SpaPres inte uppfyller målen till hundra procent, men tillräckligt nära för att kunna fungera i applikationen SVERIGE. SpaPres kan även användas som utgångspunkt för framtida krav och idéer på geografisk presentation i mikrosimuleringsverktyget.

(15)

Källförteckning

Statistikens bilder – att skapa diagram, Anders Wallgren med flera, SCB 1994 Sveriges nationalatlas – Befolkningen, Metria

GIS & Statistik, Per Arnqvist, Umeå universitet och Anders Forsberg, SIGIT

Handböcker och hjälpfiler till Microsoft Visual Basic 6.0 samt ESRI MapObjects 1.2

(16)

Bilaga 1, Enkel API-dokumentation för SpaPres

(17)

SpaPres

Short introduction

This short introduction is intended to anyone who wants to use or further develop the

”SpaPres”-ActiveX component that I made for my exam project during spring/summer 1999, for my BSc in GIS (geographical information systems). More information, for instance, the development process, will be included in the final report, which will be ready in autumn 1999.

To fully understand and use SpaPres it is necessary that you have some basic knowledge of GIS and/or thematic mapping. You must have some knowledge of a programming

language/environment that can use ActiveX-components, for instance MS Visual Basic, Borland C++ Builder and Borland Delphi.

This short introduction contains four parts:

Basic ideas and known problems Controls in SpaPres

Listing of properties, methods

Short explanation of properties, methods and events

I hope you’ll find SpaPres and this document useful.

Kiruna, July 1999 Mats Sundberg

(18)

SpaPres

Basic concepts and known problems

Basic idea

The SpaPres ActiveX-component is a control designed to present data in spatial form. It doesn’t matter what the data represents, the only requirement is that the data has to be integer values within the limits of the shapefile used and the definition of long integer in Visual Basic (just above ±2*10^9). The data is presented as a choropleth map with limited flexibility to control the classification and colouring.

SpaPres is useful for viewing data from several years. When data is stored for a particular year, SpaPres automatically views the data for that year. Note that one can only store one series of data for a given year.

SpaPres shows a legend so that the user can form an idea of how the data is distributed spatially. The user can switch year to view the other years that are stored into SpaPres. The user can also zoom and pan the map. One can also identify a region so that SpaPres shows the name and value for the region.

The shapefile

The data is presented with the help of a shapefile. A shapefile consists of three physical files;

geographical data (the coordinates), attribute-table and an index for linking the other two files. SpaPres needs the geographical data to consist of polygons, or multi-polygons (”logical”

polygons that are build up by one, two or more geometric polygons). The shapefile can be prepared using the GIS-software ArcView. There may be other ways to prepare the file as well. The attribute table must have at least the following fields:

Name Type Recommended size Description

Shape Shape N/A The geometric information of the record, must be polygons.

Id Number At least 3 digits,

no decimal part A number used to inform your application how to feed SpaPres with data.

Name String At least 20 characters

A text used to inform the user what region he or she is examining.

Value Number At least seven digits, no decimal part

A number used internally to view data.

The size of Value limits the size of data to be viewed.

If you’re going to use multiple instances of SpaPres using at the same time, you must have a separate shapefile (set of files) for each instance running at the same time. If you are running the application from a shared drive it is necessary to have separate shapefiles, preferable locally stored.

There is a way to get past this problem; If you’re only viewing one of several instances of SpaPres at a given time, you can use the same shapefile, but you MUST call the function Refresh() on the current viewed SpaPres after changing the viewed instance. This method is NOT RECOMMENDED when several applications are using the same shapefile.

(19)

Running SpaPres

Hopefully all the properties, methods and events are self-explanatory, with some help provided by the short explanations in this document. Some of the properties have limited functionality before a map is loaded or the first year is stored. Some methods generate errors when prerequisites are not met, they do this by setting the property LastError and returning false.

The main steps are:

1. Load a map with LoadMap.

2. Feed SpaPres with data using YearData.

If you want to reuse the map, but new set of data:

1. Clear the old dataset using ClearData.

2. Feed SpaPres with data using YearData.

If you want to use another map to view your data:

1. Clear the old data and unload the map using ClearAll.

2. Load the map with LoadMap.

3. Feed SpaPres with data using YearData.

SpaPres uses an internal variable to keep track of what ”state” it is in. The state decides what can be done and how SpaPres behaves. There are three states; NoMap, Map and Map&Data.

“NoMap” is when neither map nor data is loaded/stored. “Map” is when map is loaded, but no data has been stored yet. “Map&Data” is when data for at least one year is stored in SpaPres.

The classification of data is a simple, and may not be so good at all times. SpaPres divides the data into even-sized intervals. The only thing your application can alter is the upper and lower classification limits/breaks and if SpaPres automatically will update these limits upon arrival of new data. The presentation is done by picking a from-colour and a to-colour and ramp the colour for the classes in between.

Missing features

Due to the time-limited development SpaPres doesn’t have all features that on expects from an ActiveX-component of this type. For example:

• Lack of quickness; SpaPres is very slow. This is because MapObjects, used for drawing the map, is slow on changing attribute values.

• You cannot change the background colour, or any colour, except for the legend title.

• There is no way to rearrange SpaPres’s controls internally.

• You cannot retrieve data that has been stored in SpaPres, nor statistics on the data.

• You cannot get information on what years are already stored.

• You have minimum control over classification of data. A full-featured version SpaPres would have more statistical methods, such as equally number of observations per class, classification that uses standard deviation or classification that let you set every

limit/break you want to use.

• You have minimum control of the presentation of the different classes. A full-featured version of SpaPres would let you set colours for each class yourself.

(20)

SpaPres

Controls in SpaPres

Map The area where the map is viewed.

Toolbar The toolbar consists of four tools; identify, zoom in, zoom out, pan, and of one command; zoom-to-all.

YearboxShows actual year shown in the map and also lets user to switch between years stored.

Infobar Gives the user information. The first pane shows the scale of the map. The second pane shows the name and value of the region requested by the user clicking in the map with the identify tool.

Legend Gives explanation to what colour corresponds to what class, and what breaks that class has.

In this document, the Toolbar, Yearbox and Infobar are referred to as Mid Controls.

(21)

SpaPres

Listing of properties, methods and events Properties

CausesValidation ClassBreakMax ClassBreakMin ClassBreaksAuto ClassColorMax ClassColorMin Classes

Container CurrentMap CurrentYear DataRecords DragIcon DragMode Height

HelpContextID ImageVisible Index

LastErrorCode LastErrorText Left

LegendTitleFont LegendTitleText LegendVisible MapVisible MidVisible Name Object Parent TabIndex TabStop Tag

ToolTipText Top

WhatsThisHelpID Width

Visible

Methods ClearAll ClearData Drag

GetIDOrder LoadMap Move Refresh SetFocus

ShowWhatsThis YearData Zorder

Events DragDrop DragOver GotFocus LostFocus Validate

(22)

SpaPres

Short explanation to properties, methods and events.

CausesValidation : boolean

Sets/gets whether validation occurs on another control when SpaPres is about to get focus from it. See VB documentation for more information.

ClassBreakMax : long

Sets/gets the value for the top class break.

ClassBreakMin : long

Sets/gets the value for the bottom class break.

ClassBreaksAuto : boolean

Sets/gets whether the class breaks is automatically recalculated when new data is stored.

When set to true, an automatic recalculation is triggered

ClassColorMax : OLE_Color

Sets/gets the colour for the top class.

ClassColorMin : OLE_Color

Sets/gets the colour for the bottom class.

Classes : integer

Sets/gets the number of classes to use for the data.

ClearAll() : boolean

Clears data and unloads map. Sets state to “NoMap”. Returns true if successful, otherwise it sets LastError and returns false.

ClearData() : boolean

Clears data. Sets state to Map. Returns true if successful, otherwise it sets LastError and returns false.

Container : object

Returns the container of SpaPres. See VB documentation for more information.

CurrentMap : string; RO

Gets the current shapefile used for presenting data. If no map is loaded, CurrentMap returns an empty string.

CurrentYear : integer

Sets/gets the current year present in the map. If a map isn’t loaded, or the selected year hasn’t been stored, attempts to set CurrentYear will be ignored.

DataRecords : integer; RO

Gets the number of records in the map. Returns –1 if map isn’t loaded.

Drag([Action])

Begins, ends, or cancels a drag operation of SpaPres. See VB documentation for more information.

(23)

DragDrop(Source, X, Y)

DragDrop is called when a drag-and-drop operation is completed. See VB documentation for more information.

DragIcon : StdPicture

Sets/gets the icon to be displayed as the pointer in a drag-and-drop operation. See VB documentation for more information.

DragMode : integer

Sets/gets a value that determines whether manual or automatic drag mode is used. See VB documentation for more information.

DragOver(Source, X, Y, State)

DragOver is called when a drag-and-drop operation is in progress. See VB documentation for more information.

GetIDOrder(IDOrder) : Boolean

Gets the order of the records Ids in the map as the string IDOrder. Returns true if successful, otherwise it sets LastError and returns false.

GotFocus()

GotFocus is called when SpaPres gets focus. See VB documentation for more information.

Height : single

Sets/gets the height of SpaPres in your control/form. Changing this value may trigger the automatic changing of the visible-property of controls in SpaPres. See VB documentation for more information on the height property.

HelpContextID : long

Sets/gets the default help file context ID for SpaPres. See VB documentation for more information.

ImageVisible : boolean

Sets/gets whether the image is visible or not. Note that the image can be hidden behind the other controls.

Index : integer; RO

Gets the number identifying an instance of SpaPres in a control array. See VB documentation for more information.

LastErrorCode : integer; RO

Gets the number representing the last error encountered in a method

LastErrorText : string; RO

Gets a short error description of the last error encountered in a method

Left : single

Sets/gets the left edge of SpaPres in your control/form. See VB documentation for more information.

(24)

LegendTitleText : string

Sets/gets the text used to explain the values of the data.

LegendVisible : boolean

Sets/gets whether the legend is visible or not

LoadMap(Dir, File) : boolean

Loads a map from the shapefile File resided in the directory Dir and sets the state to Map.

Returns true if successful, otherwise it sets LastError and returns false.

LostFocus()

LostFocus is called when SpaPres loses focus. See VB documentation for more information.

MapVisible : boolean

Set/gets whether the map is visible or not.

MidVisible : boolean

Sets/gets whether the three mid-controls is visible or not

Move(Left , [Top], [Width], [Height])

Sets the position and size of SpaPres in your control/form. This may trigger the automatic changing of the visible-property of the controls in SpaPres. See VB documentation for more information on the move method.

Name : string; RO

Gets the name used in code to identify an instance of SpaPres. See VB documentation for more information.

Object : object; RO

Returns SpaPres as an object. Mostly used in automation. See VB documentation for more information.

Parent : object; RO

Returns the object on which this object is located. See VB documentation for more information.

Refresh()

If data is stored, it forces an update of the map with data and redraws it.

SetFocus()

SetFocus gives SpaPres focus.

ShowWhatsThis()

Displays a selected topic in a Help file using the What's This popup provided by Windows Help. See VB documentation for more information.

TabIndex : integer

Sets/gets the tab order of SpaPres within its parent form. See VB documentation for more information.

(25)

TabStop : boolean

Sets/gets a value indicating whether a user can use the TAB key to give the focus to SpaPres.

See VB documentation for more information.

Tag : string

Sets/gets any extra data needed. See VB documentation for more information.

ToolTipText : string

Sets/gets the text displayed when the mouse is paused over the control. See VB documentation for more information.

Top : single

Sets/gets the upper edge of SpaPres in your control/form. See VB documentation for more information.

Validate(Cancel)

Validate is called when SpaPres is about to lost focus to a control with CausesValidation set.

If Cancel is set on return, the change of focus is cancelled. See VB documentation for more information.

WhatsThisHelpID : long

Sets/gets an associated context number for SpaPres. See VB documentation for more information.

Width : single

Sets/gets the width of SpaPres in your control/form. Changing this property may trigger the automatic changing of the visible-property of the controls in SpaPres. See VB documentation for more information on the width property.

Visible : boolean

Sets/gets whether the SpaPres is visible or not.

YearData(Year , Data) : boolean

Stores data in the string Data for year Year and sets state to Map&Data. Map must be loaded, the number records in data must match the map and data must not yet be stored for that year.

Returns true if successful, otherwise it sets LastError and returns false.

Zorder([Position])

Places SpaPres at the front or back of the z-order within its graphical level. See VB documentation for more information.

References

Related documents

På många små orter i gles- och landsbygder, där varken några nya apotek eller försälj- ningsställen för receptfria läkemedel har tillkommit, är nätet av

Eftersom fotograferingen sålunda skett för publicering i ett grundlagsskyddat medium kunde ansvarsbe- stämmelsen – 30 § skyddslagen, närmast svarande mot 12 § i det

Det svenska systemet för geografisk miljöinformation ska vara en del av det motsvarande informationssystem som finns i Europeiska unionen. Regeringen utser en myndighet som ska

För den geografiska indelningen Län används länskod eller länsbokstav som identitet, för Kommun används kommunkod, för Distrikt används objektidentitet eller distriktskod

(Ja/Nej) Informationens aktualitet Juridiska detaljer för användande och spridning. 

För den geografiska indelningen Län används länskod eller länsbokstav som identitet, för Kommun används kommunkod, för Distrikt används objektidentitet eller distriktskod,

För att svara på fråga fyra, hur ser företagets existerande lösningar för hantering av geografisk data ut, kommer analys och implementation att användas som metod.. Analys för

Under år 2007 tillsattes i kommunen en arbetsgrupp för centrumutvecklingen i Ronneby. Arbetsgruppen fokuserar i första hand på utvecklingen av handeln i centrum. Bland annat har man