FOSS4G In Large-scale Projects
This is a modal window.
The media could not be loaded, either because the server or network failed or because the format is not supported.
Formal Metadata
Title |
| |
Title of Series | ||
Number of Parts | 95 | |
Author | ||
License | CC Attribution - NonCommercial - ShareAlike 3.0 Unported: You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal and non-commercial purpose as long as the work is attributed to the author in the manner specified by the author or licensor and the work or content is shared also in adapted form only under the conditions of this | |
Identifiers | 10.5446/15531 (DOI) | |
Publisher | ||
Release Date | ||
Language | ||
Production Place | Nottingham |
Content Metadata
Subject Area | ||
Genre | ||
Abstract |
|
FOSS4G Nottingham 201331 / 95
17
25
29
31
32
34
48
50
56
58
68
69
70
82
89
91
00:00
Scale (map)SummierbarkeitContinuous functionTerm (mathematics)Client (computing)Local GroupMaxima and minimaMereologyWorld Wide Web ConsortiumFunctional (mathematics)Modul <Datentyp>SoftwarePhysical systemComponent-based software engineeringComputer-aided designSoftware maintenanceWindows RegistryEuclidean vectorArchitectureMetropolitan area networkWide area networkMenu (computing)Open sourceBasis <Mathematik>InformationSystem programmingGeometryText editorSocial classServer (computing)Raster graphicsVector spaceFile formatProxy serverService (economics)Product (business)Flow separationPhysical systemFeedbackProjective planeSoftware maintenanceProduct (business)Office suiteInternet service providerConnectivity (graph theory)Proxy serverINTEGRALPoint (geometry)Client (computing)MereologySet (mathematics)Software developerComputer architectureStandard deviationNumeral (linguistics)Address spaceSoftwareFunctional (mathematics)Web 2.0Open setCartesian coordinate systemInformation systemsRaster graphicsGeometryLibrary (computing)Social classEnterprise architectureOrientation (vector space)Server (computing)Presentation of a group.NET FrameworkCentralizer and normalizerOperating systemModulare ProgrammierungCache (computing)Group actionLevel (video gaming)DatabaseMultiplication signModule (mathematics)File viewerView (database)User interfaceDiagramInternetworkingBasis <Mathematik>QuicksortDesign by contractData managementSI-EinheitenMultitier architectureProcess (computing)NumberSimulationClassical physicsEndliche ModelltheorieWordState of matterService (economics)Video gameShape (magazine)Coefficient of determinationCodePlanningDressing (medical)Computer simulationSinc functionRippingGraph coloringLogic gatePerspective (visual)Game theoryComputer animation
06:31
DigitizingCurveMereologyPresentation of a groupSet (mathematics)Digital librarySoftware developerCurveProcess (computing)Computer animation
06:58
CurveQuadratic equationLine (geometry)GeometryOpen setApproximationString (computer science)DigitizingNichtlineares GleichungssystemPoint (geometry)Shape (magazine)Asynchronous Transfer ModeMultiplicationAerodynamicsPolygonControl flowExtension (kinesiology)Operations researchHeegaard splittingAreaValidity (statistics)Diffuser (automotive)Constructor (object-oriented programming)Boundary value problemQuicksortGeometryMatching (graph theory)Closed setPosition operatorMultiplicationPoint (geometry)Configuration spaceMultiplication signTrailBitExtension (kinesiology)Message passingOpen setCodeLocal ringStructural loadSoftware developerLine (geometry)Heegaard splittingRoboticsQuadratic functionPolygonClient (computing)Digital libraryCurveValidity (statistics)Minimal surfaceSoftwareLinearizationNetwork topologyArc (geometry)Game controllerParametrische ErregungNichtlineares GleichungssystemQuadratic equationComputer animation
09:43
Parallel portLine (geometry)GUI widgetOpen setPoint (geometry)DigitizingSummierbarkeitExecution unitMaxima and minimaMetropolitan area networkMoving averageConditional-access moduleEmulationPerpetual motionSoftware engineeringUnified threat managementNewton's law of universal gravitationTopologyControl flowExtension (kinesiology)Validity (statistics)GeometryComplete metric spaceDrag (physics)Vertex (graph theory)PolygonMultiplicationVector spaceNumberWorld Wide Web ConsortiumCuboidStrategy gameRule of inferenceScale (map)Thresholding (image processing)TrailSet (mathematics)State of matterFlagEvent horizonNetwork topologyAerodynamicsClient (computing)MathematicsText editorEuclidean vectorComputer iconStructural loadFile formatSocial classRotationNatural languageScripting languageJava appletDatabaseTable (information)Function (mathematics)Category of beingMultitier architectureInflection pointServer (computing)DisintegrationSQL ServerWeb serviceSoftwareVideo gameQuantum stateComputing platformWindows ServerStandard deviationSoftware frameworkOpen sourceData managementInformation securityObject (grammar)Complex (psychology)Functional (mathematics)Rollback (data management)CuboidAttribute grammarOperator (mathematics)Scaling (geometry)Projective planeInternationalization and localizationHierarchyImplementationParallel portSubstitute goodError messageTrailCategory of beingPolygonCartesian coordinate systemNatural languageSoftware developerCircleMultiplication signSoftwareNetwork topologySelectivity (electronic)Variable (mathematics)Sheaf (mathematics)Vector spaceDatabaseIntegrated development environmentRadiusPoint (geometry)Open setModule (mathematics)NumberExtension (kinesiology)Process (computing)SQL Server 7.0Computer iconLevel (video gaming)Right angleStrategy gameCausalityClient (computing)Kolmogorov complexityGeometryZoom lensSocial classConnectivity (graph theory)Physical systemInformation securityComputer fileText editorGame controllerRotationSemiconductor memoryLimit (category theory)VolumenvisualisierungData qualityOpen sourceMultitier architectureWeb browser.NET FrameworkArithmetic progressionIntServLine (geometry)Data storage deviceCurveComputing platformRule of inferenceMobile appSet (mathematics)Digital libraryLibrary catalogServer (computing)PortletGraphical user interfacePlanningConstructor (object-oriented programming)Validity (statistics)Electronic program guideDrag (physics)Enterprise architectureInsertion lossProcedural programmingWeb 2.0Vertex (graph theory)Graph (mathematics)TouchscreenGame theoryPhysical lawFlow separationDynamical systemEndliche ModelltheorieSpeech synthesisWhiteboardRoundness (object)Sound effectCASE <Informatik>MultilaterationEvent horizonAreaVideo gameData structureMusical ensembleView (database)CodeHydraulic jumpSuite (music)Computer animation
Transcript: English(auto-generated)
00:00
Thank you, Alex. Can you all hear me? Those in the back? Is this okay? Yeah, okay. And now, can everybody hear me in the back? Is it okay? Okay, so I won't use the microphone. Okay, welcome to today's talk. I'm Marko Torkovic. I work as a developer in IGEA
00:20
from Croatia. It's part of IN2 group. I won't bother you too much with the numbers, but we are the largest software development company in Croatia. We have offices across Eastern and South Europe, and maybe to say that IGEA is a
00:40
competent center for GIS. So we do a GIS development. Today's presentation and a solution is part of Kosovo Cadastral Agency Spatial Data Infrastructure that we have implemented recently. It is an ongoing project, so we have about two or three months of
01:04
development left. It is an integrated web GIS solution for spatial data definition and maintenance, and it consists of several functional software modules that were separate projects. GeoPortal, Cadastral and Land Information System, and Adverse Registry for
01:24
Adverse Data, Data Maintenance and Definition. One of the specialities of this project was that we were forced to use Microsoft software for database management system and for operational system because of contract of Republic of Kosovo and Microsoft. So
01:46
we couldn't choose that, of course. If we could, we would go with post GIS, but that was not in the question. And the other thing that modules that would be developed in this project
02:01
would facilitate the next sort of big software projects that we are part of. So this diagram shows the component architecture of the whole system. So from the user's perspective, we have a GeoPortal as a data dissemination point. You will recognize a couple
02:22
of those logos there. We use that all. So this is the, this down there is an internal system. It's an internet application for KCA users where they define and maintain the data.
02:45
This module deals with address register data and this module deals with cadastral data. So this is the central part of the whole system. It offers viewing and editing
03:03
capabilities for the data. So that's the point of the system that consumed most of our development time. This is the short overview of KCLS graphical component. We call it KG,
03:20
of course. It's integrated solution for definition and maintenance of KCA's data spatial data sets, both address register and cadastral. And it's a basis for development of other modules that would work with other KCA's information system.
03:43
Of course, we use the GeoPortal to disseminate the data toward the public. Its architecture is classic, classical three-tier architecture on a database level. We have a SQL server at 2008. On the middle tier, we have a Geo server with Geo web cache and .NET MVC3
04:06
business application. Client side is developed in open layers GeoX and XJS standard solution and the components, of course, base to SOA principles, communicate via services,
04:21
WMS and WFS and JSON. A couple of functions that our KG application offers. It's, of course, the main component is a viewer editor. It's a main point for the spatial data viewing
04:41
and editing. Then the feature class tool that enables us to define other feature classes and import data into our system later. GeoServer rests up before for publishing new feature classes on GeoServer once they are collected. Then we have import tool that we use for
05:04
importing the data into our system. Currently, we support GML shape, DWG, interlice and GeoTiff for raster data. And then there is styling tool which we use to dynamically style our geometries on a client side. It's client side. This is a short GeoPortal overview.
05:29
Of course, as I said before, this is a central public oriented software for dissemination of spatial data sets. And you can see the user interface here on this picture.
05:41
This is architecture of GeoPortal. It's very similar to KG application, except you will notice we have library portal enterprise here that wraps client side functionality and access proxy on middle layer for proxying WFS and JSON requests to business application. GeoPortal
06:03
enables us to view spatial and related open numeric data. It offers search and discovery services, ordering and download of data sets and products and upload of data sets by data providers and enables users to give feedback on data quality. So that can be checked.
06:25
This is the URL for GeoPortal. So check it out. So the next part of the presentation is about challenges that we have met during the development process. I have listed
06:41
308 challenges. So we'll go one by one until the end. So they better hurry. Okay. The first challenge that we knew it will be a big problem. This is very bad joke. So it's okay if you're not laughing. It's called bad joke. So we had to make a tool for curve digitization.
07:03
So what we did, we implemented quadratic curve handler. So that's open-ended development based on quadratic Bezier curve parametric equation. So we in the end approximated with line geometry and this is how it works in practice. So you digitize the first point,
07:21
the last point and then you use the apex to reshape the curve. This is the next cool handler that we did. This is a line curve, curve switcher handler that enables us to seamlessly switch between arc digitization and linear segment digitization. So it
07:47
enables fast digitizing for this is 4G. So when it comes to polygons digitization, we also implement several cool features. We basically what we did of course was to extend open layers
08:06
draw feature control. We use JSTS on a client side for geometry validity and topology checks and all operations. So the first tool that I will show you is a polygon splitting tool.
08:22
The second I remove polygon area and then adjacent polygon digitization. So this is a demonstration of polygon splitting tool. It's done client side. So it uses JSTS for splitting the polygon and we can see here the multiple, the one multi-polygon
08:42
has appeared in this configuration. It supports polygons with holes, so it's quite cool and it's done client side. This is a tool that we can use to draw multi-polygon. So on a client side with open layers, so we just add geometry while tool is active and it will add to existing
09:06
geometry. We can also subtract the geometry from a polygon and get a cool looking robot. This is a very cool feature. It's inspired on GIS, desktop GIS software and what we have
09:26
here is a first polygon and then we digitize a line around it and it just finishes a polygon automatically to close the minimal surface with the first polygon. You get the idea.
09:44
These are CAD-like tools for perpendicular and parallel construction. What they do first is they segment the line from point to point so that perpendicular and parallel construction would even make sense. Then when we select the segment that we want, they just programmatically
10:05
draw a parallel and perpendicular line and then you can reshape it by dragging. This is the nice example of a tool that guides the user how to use the application. It has
10:25
five steps. So basically what we want to do is to digitize a point that lies on an intersection of a circle and a line. So what the user does first is digitizes start point of the line,
10:42
end point of the line, center of the circle enters radius and then selects the appropriate point that he wants to use. This is a very cool feature. It's a topology preserving modified feature. It's basically extended modified feature from open layers and what it does
11:05
is when we drag a point that coincides with other points, that point goes with it as well. So the topology of our section is preserved. It also has a validity check. We don't allow
11:24
self-intersecting polygons and it has a rollback. So when we do an error on geometry, it just fixes itself to the last valid state. It, as you can see, I think it resides on a
11:42
JSTS for all the operations. It could use some modifications like insert of tool that would insert vertex on all coincident geometries and delete tool but that's a work in progress. Okay, basically our application is a full featured web editing application and we knew we
12:08
have performance issues when we decided to use open layers because the large number of features will always overburden the browser. It has limited capabilities, limited memory so
12:26
we had to think of something that would ease this up. So what we did was to extend open layer strategy bounding box so that implements seamless switching between vector and
12:41
WMS layers when based on a zoom level. So on the large scales, you have vector features and on the small scales when you zoom out, you have WMS features. So that means that you can draw on the full extent but you can't select anything. So if you want to select features,
13:03
you zoom in to one to 5,000 or whatever you want, whatever you set it and then you can select edit data and the data that is edited and selected that doesn't get unloaded when you zoom out again. So it's a pretty cool feature and the bounding box does everything, keeps track of the
13:24
WMS layer so you don't have to worry about anything. Of course, this active layer concept is inspired by edit session on desktop GIS tools and what we did was implemented the
13:43
one set of controls that can work on all layers so we don't have to duplicate controls. What was missing in open layers that work out of the box was that some controls don't have implemented set layer. So we added set layer method for every control that we use
14:02
and then when user activates edit session for some layer, all controls get rewired to that layer so they can work on it. One of the requirements of project was to enable user to dynamically
14:21
style vector and WMS layers so to be able to change the styling information about everything. So for this we use the GeoSolutions style editor component and what we do is when a user edits the SLD through the graphical interface we create vector styles from that SLD, dynamically
14:45
reload the icons for each layer node in the layer tree and besides that we have also overridden open layers renderer and open layers formatted SLD classes to add the support for label rotation which we needed as well. Multi-language support was a big issue for us. We implemented
15:11
in several layers in the application. On client side we have i18n language files for JavaScript
15:21
and then in the database we have multiple attributes for each language we have an attribute in a database but how to style geometries. We asked the GeoSolutions to develop a new function for that cause. It uses environment variables and substitution
15:47
and it's called property and you can send in a request the name of the attribute that you want to use for geometry styling that's pretty cool.
16:04
It's a very serious and official system so of course we had a lot of demands on spatial data quality control. We have a set of business rules and data naming convention that we have to follow and of course we check geometry validity on the client side that performance is okay so
16:28
it's good but for several others complicated topology and especially layer to layer topology checks and hierarchy checks that form hierarchy we use the database special data quality control
16:48
via procedures and such. On the middle tier we use a jtsport nts for several other checks so we could say we have a three-way control on our system. So because you remember the
17:07
graph from before all those systems are interconnected and so as the GeoPortal disseminates data for internal applications we don't want to overburden our internal infrastructure by
17:21
with public access so what we did was to replicate the database and GeoServer catalog from one system to another for that we use the Microsoft SQL server integration services and the GeoServer REST app before reconfiguration of data stores when we move them from one
17:41
storage to another. I think this yeah this is the last one so bear with me. Of course as I mentioned in the start we had to use Microsoft software for operating system and for DBMS and also
18:04
we use a application server for Microsoft IS7 and the .NET framework for and .NET MVC3 for our business application and for a GeoPortal we use a LiveRay portal enterprise platform
18:21
and it wraps our client-side functions in in portlets so that was one of the okay so we have plans for improvement of that system the development of the cadastre component
18:40
is still in progress so it's an ongoing project I don't know about a couple of months more and it will be over then we thought it would be cool to to offer some kind of a data preview when importing our data but that is that still needs to some thinking more flexible language and security would be would be nice also for for application which security except especially
19:06
and then the native support for curved geometries from from GeoServer and JTS and GeoTools and OpenLayers that that would that would probably need a tremendous amount of time and effort from the community to be implemented but I would I'm sure it will be implemented one day so of
19:26
course it is our duty and we would it would be nice that we try to contribute more to open source community so in the end of the project we'll we'll contact some of the developers from
19:40
OpenLayers and see if there's any any interest in in modules that we have developed for for this application so in the end to wrap things up we have learned that Phosphor-G is mature enough and flexible enough to to implement even very complex SDI implementations and business
20:03
applications so of course the the big plus is a great community very large community that that helped us in every way of that it could in a process of development the software is very versatile flexible scalable all the all the nice things and even if we want to we can easily
20:29
integrate it with proprietary software as we had to do of course we can only conclude that it was the the right the right choice for for this particular project and implementation okay so
20:42
that's that's it from me I think yeah we have enough time thank you so feel free to to ask something yes sir we've got five minutes for questions
21:03
thank you