You are on page 1of 26

Razvoj web GIS aplikacija na

GeoExt/ExtJS i Spring MVC


frameworku
Tomislav Obad
IGEA IN2 Grupa
Sadraj
O Igei i meni
GIS iskustvo
GIS razvoj u Igei/IN2
Orijentacija opensourceu
Arhitektura web baziranih GIS rjeenja
Baza podataka
Srednji sloj
Klijent
Primjeri iz prakse
Zakljuak

IGEA IN2 Grupa
O Igei i meni
O Igei
Varadinska softverska kua od 1991. godine
Orijentirani na javni sektor i sve vie na GIS
Klijenti: MP, DGU, MINGORP i dr.
Igea je dio IN2 grupe od 2007. godine


O meni
u Igei od 2004.
u poetku Java web razvoj
kasnije web i desktop Java bazirani GIS razvoj
voenje GIS projekata s razvojne perspektive
IGEA IN2 Grupa
GIS iskustvo
Igea se bavi GISom od sredine 90ih godina, vie u posljednjih nekoliko
godina od kad smo dio IN2 grupe
projekti na lokalnom nivou i dravnom nivou
vezani uz katastarski sustav i katastarske izmjere u RH
rjeenje za Katastarske izmjere (desktop i web) jedan od kljunih GIS
projekata u posljednje vrijeme
orijentiranost na opensource

osobno iskustvo u GISu zadnjih 4-5 godina
baze: Oracle Spatial, PostGIS, MS SQL Spatial
desktop: Openjump/Kosmo framework
klijent: Openlayers/GeoExt
IGEA IN2 Grupa
GIS razvoj u Igei
komercijalno -> opensource


IGEA IN2 Grupa
GIS razvoj u Igei (2)
IGEA IN2 Grupa
Orijentacija opensourceu
visoke cijene licenci i drugi nedostaci 'zatvorenog' softvera
opensource se namee kao logino rjeenje

obzirom na orijentiranost Javi, odabir je OSGeo Java stack:
o GIS server - Geoserver
o Desktop rjeenje - Kosmo framework (trenutno nije dio OSGea, ali
koristi brojne OSGeo Spatial biblioteke)
srednji sloj:
o Java Spring (MVC) framework
o MyBatis
klijentski razvoj:
o Openlayers
o GeoExt/ExtJS


IGEA IN2 Grupa
Arhitektura web baziranih GIS rjeenja
IGEA IN2 Grupa
Baza podataka
Oracle
o Igea je dugogodinji Oracle partner
o logian izbor kod GIS nadogradnji postojeih sustava
o feature packed spatial podrka
Postgres
o sve vie koritena u projektima niskog budeta
o brza i robusna
MS SQL Server
o koristi se u projektima koji su vezani uz SQL Server ili kod kojih
je koritenje SQL Server baze obavezno
o jo uvijek mogunostima zaostaje za Oracleom i Postgresom
IGEA IN2 Grupa
Srednji sloj - Geoserver (1)
opensource Java baziran GIS web server
diseminacija i editiranje prostornih podataka (WFS-T)
omoguuje izdavanje podataka iz raznih izvora prema otvorenim
(OGC) standardima
referentna implementacija OGC WFS (v1.0 and 1.1, transactions and
locking), WCS (v1.0 and 1.1) i WMS (v1.1.1) web servisa
user-friendly web-bazirani konfiguracijski alat
radi na Tomcat i Jetty aplikacijskim posluiteljima(Java (J2EE) servlet
baziran)
rad s PostGIS, Shapefile, ArcSDE, DB2 i Oracle izvorima podataka
IGEA IN2 Grupa
Srednji sloj - Geoserver (2)
<?xml version="1.0" encoding="UTF-8" ?>
<wfs:FeatureCollection xsi:schemaLocation="http://localhost:8080/geoserver/foi
http://localhost:8080/geoserver/wfs?service=WFS&version=1.0.0&request=DescribeFeat
ureType&typeName=gis%3Afakultet http://www.opengis.net/wfs
http://localhost:8080/geoserver/schemas/wfs/1.0.0/WFS-basic.xsd">
<gml:featureMember>
<gis:fakultet fid="fakultet.2">
<gis:fakultet_id>2</gis:fakultet_id>
<gis:naziv>Fakultet organizacije i informatike</foi:naziv>
<gis:geometry>
<gml:Point srsName="http://www.opengis.net/gml/srs/epsg.xml#31275">
<gml:coordinates decimal="." cs=","

ts="">5603429.59250588,5130163.77304553</gml:coordinates>
</gml:Point>
</gis:geometry>
</gis:fakultet>
</gml:featureMember>


IGEA IN2 Grupa
Srednji sloj - Spring 3.0 MVC (1)
request bazirani framework
@RequestMapping i
@Controller anotacije
AJAX baziran klijent koristi
mapirane metode iz kontrolera,
npr. getParcelUsageTypes()
IGEA IN2 Grupa
Srednji sloj - Spring 3.0 MVC (2)
package hr.igea.webgis.web.controller;

import java.util.List;
import java.util.Map;

import hr.igea.webgis.core.dao.KatastarskaOpcinaDao;

import ostale.klase;

/**
* Kontroler za dohvat podataka kat. opcina
*/
@Controller
public class KatastarskaOpcinaController {

private static Log log = LogFactory.getLog(KatastarskaOpcinaController.class);

@Autowired
private KatastarskaOpcinaDao katastarskaOpcinaDao;

/**
* Vraca popis katastarskih opcina za trazeni katastar_id
*/
@RequestMapping("/katOpcinaPoKatastru.json")
public @ResponseBody List<Map<String, Object>> dohvatiKatastarskuOpcinuPoKatastru(
@RequestParam("id") Long id) {
log.info("vracam kat. opcinu za MBR_KATASTRA + " + id + "... ");
return katastarskaOpcinaDao.dohvatiKatastarskuOpcinuPoKatastru(id);
}

}


IGEA IN2 Grupa
Srednji sloj - MyBatis (1)
data persistence framework
poslovna logika Igeinih sustava je esto bazirana na
stored procedurama, pa je MyBatis bolji izbor od
Hibernatea
koristimo ga za odravanje alfanumerikih podatak
za odravanje prostornih podataka se koristi WFS-T
protokol podran od strane Geoservera ili procedure.
IGEA IN2 Grupa
Srednji sloj - MyBatis (2)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="hr.igea.webgis.core.dao.KatastarskaOpcinaDao">

<select id="dohvatiKatastarskuOpcinuPoKatastru" resultType="java.util.HashMap"
parameterType="long">
select
KO.MBR_KATASTARSKE_OPCINE,
KO.NAZIV_KATASTARSKE_OPCINE,
KO.MBR_UREDA
from
KT_ADMIN.katastarska_opcina ko
where
ko.MBR_UREDA = #{id}
order by
KO.NAZIV_KATASTARSKE_OPCINE
</select>

</mapper>

IGEA IN2 Grupa
Klijent - OpenLayers (1)
OpenLayers je opensource javascript framework koji
omoguuje proirivanje web stranica sa prostornim
podacima u obliku dinamikih mapa.

omoguuje prikaz rasterskih mapa i vektorskih podataka
iz raznih izvora
o WMS
o WFS
o Google Maps
o Openstreetmaps
o i dr.

IGEA IN2 Grupa
Klijent - OpenLayers (2)
Osnovni objekti

OpenLayers.Map
OpenLayers.Layer
OpenLayers.Control


IGEA IN2 Grupa
Klijent - OpenLayers (3)
// kreiranje mape
var mapOptions = {
projection : new OpenLayers.Projection("EPSG:31275"),
displayProjection : new
OpenLayers.Projection("EPSG:31275"),
maxResolution : 156543.032578125, numZoomLevels : 25, fallThrough : false
maxExtent : new OpenLayers.Bounds(5599340, 5127540, 5606975, 5134230)};

var map = new OpenLayers.Map('mapa', mapOptions);

// kreiranje sloja s Geoservera
var gradLayer = new OpenLayers.Layer.WMS(
"Grad",
"proxy/wms",
{ layers : 'gis:grad',
format : 'image/png',
transparent : true
}, {
singleTile : true,
'isBaseLayer' : false
});

// dodavanje sloja na mapu
map.addLayer(gradLayer);




IGEA IN2 Grupa
Klijent - ExtJS/GeoExt (1)
ExtJS je opensource Javascript library za izradu
interaktivnih Ajax baziranih web aplikacija
sastavljen od gotovih widgeta za izradu web suelja
dobar kompromis izmeu brzog razvoja i mogunosti
customizacije
koristimo za ga poslovne sustave i GIS aplikacije

GeoExt je Javascript toolkit koji olakava rad s
OpenLayersima
MapPanel, LayerTree, AttributeForm...
IGEA IN2 Grupa
Klijent - ExtJS/GeoExt (2)
// ExtJS combobox
new Ext.form.ComboBox({
id: 'comboKatOpcina',
fieldLabel: 'Kat. opcina',
store: new Ext.data.JsonStore({
url: 'katOpcinaPoKatastru.json',
fields: ['MBR_KO', 'NAZIV_KO'],
emptyText: 'Odaberite kat. opcinu',
displayField: 'NAZIV_KO',
valueField: 'MBR_KO',
allowBlank: false
})
})
IGEA IN2 Grupa
Klijent - ExtJS/GeoExt (3)
// GeoExt map panel
new Ext.Window({
title: "GeoExt primjer",
height: 600, width: 800, layout: "fit",
items: [{
xtype: "gx_mappanel",
layers: [new OpenLayers.Layer.WMS(
"Gradovi", "http://localhost/geoserver/wms",
{layers: "gis:grad"}
)],
zoom: 1
}]
}).show();


IGEA IN2 Grupa
Primjeri iz prakse (1)
IGEA IN2 Grupa
Primjeri iz prakse (2)
IGEA IN2 Grupa
Primjeri iz prakse (3)
IGEA IN2 Grupa
Zakljuak
GIS razvojno okruenje Igee/IN2 grupe bazirano je na
opensourceu

dobra iskustva s:
o Spring MVC-om
o Mybatisom
o Geoserverom
o Openlayers/GeoExt/ExtJS

IGEA IN2 Grupa
KRAJ

IGEA IN2 Grupa

You might also like