GeoExt2 Ð Past, Present and Future
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 | 188 | |
Author | ||
License | CC Attribution 3.0 Germany: You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor. | |
Identifiers | 10.5446/31710 (DOI) | |
Publisher | ||
Release Date | ||
Language | ||
Producer | ||
Production Year | 2014 | |
Production Place | Portland, Oregon, United States of America |
Content Metadata
Subject Area | ||
Genre | ||
Abstract |
| |
Keywords |
FOSS4G 2014 Portland59 / 188
7
10
14
15
16
23
24
25
28
29
33
37
39
40
43
45
46
48
50
56
64
65
69
72
74
82
89
91
98
102
107
111
114
118
128
131
132
135
138
141
143
147
149
150
157
158
161
164
165
166
173
174
175
179
185
00:00
Online helpTexture mappingCartesian coordinate systemBitMappingData managementComputer architectureWeb applicationPresentation of a groupWeb 2.0Point (geometry)GeometryBuildingPattern languageConnectivity (graph theory)Functional (mathematics)ResultantProjective planeSoftwareOpen sourceSingle-precision floating-point formatStreaming mediaCuboidNetwork topologyComputer fileInteractive televisionWave packetSoftware developerDemo (music)Software frameworkPower (physics)Server (computing)Food energyParameter (computer programming)Stress (mechanics)Product (business)MassNumbering schemeOrder (biology)Workstation <Musikinstrument>1 (number)File formatForcing (mathematics)TheoryWebsiteWhiteboardStudent's t-testRevision controlError messageComputer animation
04:48
GeometryData managementCodeSoftware testingSoftwareScripting languageMultilaterationExt functorBitProgramming paradigmCartesian coordinate systemPattern languageSpeech synthesisMathematicsLetterpress printingBand matrixSoftware bugExtension (kinesiology)Ocean currentContinuous integrationView (database)Revision controlTexture mappingOpen sourceRight angleWebsiteVector potentialSocial classScaling (geometry)Game controllerRectangleClient (computing)Endliche ModelltheorieFunctional (mathematics)Product (business)Integrated development environmentUser interfaceAlpha (investment)Projective planeMultiplication signCASE <Informatik>Closed setOrder (biology)Condition numberFamilyAdditionGodAuthorizationState of matterPoint (geometry)Spring (hydrology)Data structure10 (number)Stress (mechanics)Error messageOrdinary differential equationData storage deviceSpacetimeMereologyExecution unitWeb browserProbability density functionDegree (graph theory)Cone penetration testMeeting/InterviewComputer animationLecture/Conference
12:30
Texture mappingPlastikkartePresentation of a groupElement (mathematics)Network topologySeries (mathematics)Computer iconPhysical lawMathematicsTrianglePower (physics)Group actionContent (media)Graph coloringEndliche ModelltheoriePoint (geometry)Object (grammar)Template (C++)CASE <Informatik>Line (geometry)Extension (kinesiology)Order (biology)CodeFilter <Stochastik>Matching (graph theory)JoystickGame controllerServer (computing)Letterpress printingElectronic mailing listMedical imagingMetropolitan area networkOverlay-NetzGUI widgetGeometryOpen setEmailDivision (mathematics)Cartesian coordinate systemAreaRegular graphLecture/Conference
18:28
Client (computing)EmailOpen sourceGeometryDecision theoryPoint (geometry)Software testingElectronic mailing listServer (computing)Projective planeExt functorMathematicsWave packetVisualization (computer graphics)Cartesian coordinate systemOpen setRepresentational state transferBootstrap aggregatingWeb applicationSoftware maintenanceDebuggerMappingAnalytic continuationCASE <Informatik>Software bugOnline helpMultiplication signStreaming mediaDirection (geometry)AdditionWorkstation <Musikinstrument>Software frameworkWeb pageTexture mappingBranch (computer science)Student's t-testLogicHypermediaDigitizingSound effectLattice (order)Perspective (visual)Query languageFeedback3 (number)WordCurvature
Transcript: English(auto-generated)
00:00
Hello, everyone. Thank you for coming. And welcome to this Geo XT2 presentation. We'll go over the past, present, and future of the project. First of all, I'm Julien-Samuel Lacroix.
00:21
And my co-presenter, Marc Johnson, could not make it to the FOS4G this year. But he should be currently watching the live stream of the presentation. So hi, Marc. And you are really missing a quite good conference. We're having a blast. And I just want to let you know that they switched rooms
00:44
to give us a bigger room. So you are really missing something. So Marc is a developer and project manager at Terrestris in Bonn, Germany. Terrestris is a company that develops open-source softwares
01:04
and do projects based on open-source software in Germany. And I'm Julien-Samuel Lacroix, like I said. I am a developer and project manager as well. I work for MattGears. We are open-source software developer from Canada
01:21
and offering development support and training for Map Server and all other web mapping applications around our software, our own Map Server, everywhere in North America and a little bit outside of it as well.
01:41
So now that the shameless plug are done, what is GeoXT? GeoXT is a JavaScript framework built to help developers build rich web mapping interfaces. It's based on OpenAIRE2 and XJS.
02:02
It actually enhanced XJS to give it special components. XJS is a rich UI framework to build desktop-like applications on the web. So it really has a lot of cool features in it already built in.
02:21
So here we have a simple GeoXT application where you have a panel for the map, and you have a grid containing your results. And you can have interaction between the two. So if I select a feature in the map, it will be selected in the grid. Or if I select a feature in the grid,
02:42
it will be selected in the map. Another more complex example would be an application where we have a tree, which is already built in in X, and that we develop a layer tree in GeoXT for the mapping components.
03:00
So with that, we can draw new features or edit existing one. And we have all the features inside a box. Of course, this demo is online and available to the public. So you can sometimes have a few surprises
03:21
of what you can find here. Anyway, so GeoXT has been a really cool tool to build a very, very powerful web application.
03:41
It has been started in 2009. The first discussion happened actually in a first 4G like this one. It was based on Ext3. And at some point, here we have the website, it's gox.org. So at some point in 2011, Sancha,
04:02
the company behind XJS, released a new version of Ext4, which was really, really, really great. It came with a lot of great new features, like a new MVC pattern architecture. I'll tell you a little bit more on that. But it's a new way to develop or a cool way
04:24
to develop applications. And it was now available in our web mapping application. There was a dependence management, so you didn't have to load the whole library just to have a few features. There was functionality to have single file builds, charting, and things like that.
04:41
But the sad thing is that it was backward and compatible. Of course, us developers wouldn't be stopped by such puny arguments, backward incompatibility. So what we did is that we organized an international code sprint. We did a lot of solicitation to our clients and potential clients to get money
05:03
to pay for our developers to get together in Bonn, Germany during a week and develop a port of the current GeoXT application or library to the new version of XJS. So it did happen.
05:20
And for those who are not familiar with code sprint, what happens is that you take a bunch of developers. There was around 20 people, like I said, in our case. You get them in a room, close the door, and provide them with food and coffee and beer. And at the end of the week, they would have worked from 8 to late every day.
05:42
And at the end of the week, we got an alpha release, public examples working with XJS 4, documentation, and a brand new library that was working very well and that was ready to be used in real projects.
06:01
So it was a huge success and a lot of fun, of course. Now, what do we have? GeoXT2 is there. GeoXT2 is ready to be used. It has been used already in several applications at our company and at Camp2Camp, at Terrastress.
06:22
All the companies behind that participated in the code sprint did use GeoXT2 in a production environment. So it's there. And you should use it because it's a really great library. The current version uses the latest EXT4 version,
06:43
the latest OpenLayers 2 version, and we are still working to make it better. So what's new in this new GeoXT2 library, actually? We have all the new EXT4 paradigms. So the MVC pattern architecture, those
07:01
who are not familiar with MVC, it's a way to develop software where your data is independent from the user interface and the user interface is independent from the tool behaviors. So your data is encapsulated in a model, the M.
07:23
And all the change to the data is propagated to the user interface, which is the view. So the V is the view, which is the user interface that you will send to your user. Your user will interact with tools who are controllers.
07:41
So that's a C. So the MVC pattern is you will add your data in models, user interface in view. You will manipulate your data with controllers that will change their state, that will propagate it to the view, that will propagate it to the user. The user will then use controller to change the models.
08:00
And it's a way to structure your code base that makes the management of big project a lot and a lot easier. I'll show you an example a little bit later. In the EXT4, we also have build tools.
08:22
So now, with the dependence management and some script provided with the EXT.js4, we can compile applications to make them a lot much smaller. So they are also a lot much faster.
08:43
So for example, the small example that we had here will display you a little bit later. The code base is around 5 megs. But we only use around 250k in that specific example, because we don't need all the features.
09:03
So it is saving a lot of space, a lot of bandwidth. And it's much faster in the browser as well. There is also easier teaming. So there are several different teams that you can use in the EXT.js4. And they are a lot easier to customize by yourself
09:23
or by your designer. The API documentation is built from the code base. And when we did a code sprint, we made sure that all our functions and all our classes were correctly commented inside the code.
09:42
So it allowed us to dynamically build the API documentation from there. So we have a nice, here it's an EXT4 application, of course, where you can browse the source or the documentation of Geo EXT.
10:00
And that was generated on the fly. And it's regenerated each time we make a change in the code base. There are also Atlas testing and continuous integration. Atlas testing means that we have script on the command line
10:21
to test all our changes. So before committing a new feature or a bug fix, we can easily rerun all the tests that we developed to make sure that our changes do not affect the rest of the library. This means that the product is a lot more robust
10:40
than any other libraries like it. The website is currently hosted in the Geo EXT GitHub. But at some point, we will, in the near future, we will simply replace the Geo EXT1 website, geoext.org with the Geo EXT2 website.
11:05
Some examples now, yeah. OK, here's a few cool features that we have in the XJS4 and Geo EXT2. Who here? Raise your hand to people who are developers
11:22
or JavaScript developers. Cool. There's a few of you. So for those who are not, I'm sorry. I will show a little bit of code here. But if you are not interested by it, just take some notes while I'm speaking or look somewhere else.
11:42
OK, here, an example of the print capabilities that we have in Geo EXT2. OK, so here, we have the extent of the printed map we will do. We can change it, and the orange rectangle
12:02
will adjust to the scale, to the right scale it's supposed to be. We can also rotate it, rotate it, sorry, rotate it
12:21
like that by 45 degrees or less. So if I create this PDF, I will get a printed map from a template. If you've been to JCA card presentation on Mapfish print, that's what is used in that case.
12:43
And the template is controlled by the developer. But the widget to select the printed area is really the key point here and what is really interesting. So if you've noticed, the north was not north because I did rotate the printing extent.
13:06
Then we also have legendry. That is, those images are coming from WMS get legend graphic request. They are not specific to the application. So if you add new layers, the icons
13:22
will automatically be generated from the server. We have a tree where I can dynamically add or remove layers in the map, and they will be automatically
13:40
added to the legend or the layer tree. I can move them around, and they will move in the map as well as in the tree. If we go down, yes. Toggling the visibility closes the layer or remove the icons.
14:03
Can show or hide in the legend but keep the layer in the map. Or simply change the icon. Here it's the icon that comes from the server, from the get legend graphic. But I can force it to something else.
14:21
And all that is done with a few lines of code. So here we are creating a map, adding a few layers. That's regular open layers code. Creating a map panel, and the legend panel
14:40
is simply a definition of the object that will contain the div that contains the legend. And as you can see, it doesn't contain any layer definition because they come from the map. They are really tied together.
15:06
Here we have a more complex tree. I can remove or add layers, change their state, and have a distinction between base layer and overlays.
15:27
The tree model is quite simple actually. We simply define if it's a base layer container or overlay layer container. And this will give you a group by overlay or base map layer
15:45
tree. You can also define filters if you want to have specific layers in the tree or not. Some sliders. Here it's a passive slider that updates the map opacity when
16:05
you release it. Here it's an aggressive one that upsets the visibility. It's really useful on the second example where you have an auto layer beside it. So you can mix both. OGC capabilities, it's just a cool feature
16:24
where you can have a list of all your layers that comes from a WMS get capabilities request. The grid here is automatically generated from the WMS get capabilities. And I can open previews of them by double clicking them.
16:45
It's already simple stuff that we have done with Geo XT2. Before going to the future, I will just show you the small MVC application.
17:02
It's a very cool feature actually. We have a map. At the back of the room, do you see the triangles? Those are montanes. They are color coded based on their height, on their elevation. So I have a series of columns in a grid that are matched
17:24
with the, if I select a montane in the map, it will select in the grid. The grid, I can control which columns are available or not. For example, here, I will remove the ID column. I can sort my columns dynamically just
17:42
by clicking the column header. Or I could order them from south to north or from east to west. And the thing that is cool with Geo XT is that you can edit your values.
18:04
And it will reflect directly in the map. Here, the montane changed color. And the graphic did change as well. So I can also select from the graphic to be able to explore the data. This is really, really cool and really, really easy to do.
18:21
So now, what's the future of all of this? We're going where there's no road. In the near future, there will be a point release of Geo XT2. It's mostly bug fixes and continuous maintenance
18:41
of the library. We'll do a lot of advertising and visualization to make people use it because we want people to use it to get feedback. And we'll take over Geo XT.org again. In the not so near future, there's
19:03
a lot of interest in using other mapping library because OpenLayers 2 is becoming more and more obsolete. So there have been already some work to test with Leaflet and OpenLayers 3 instead of OpenLayers 2. It's in the pipeline. And same thing, XJS 5 is out now.
19:23
So we should definitely look at that. But it's not as hard to use XJS 5 as it was to use XJS 4. So there's already been some work to port Geo XT2. It should take a lot less time to port.
19:41
There's actually already a roadmap for XJS 5. There's maybe a third or a quarter of the tickets already fixed. It's doable. We'll do it, but with your help. We need your help, please. There's also already some work in the pipeline
20:02
to use other mapping libraries. It's going well. Questions? Yes, please use a microphone so Mark can hear you. What do you recommend for training resources?
20:23
Basically, I am going to be developing with Geo XT in the very near future, no prior experience. What's the best way to learn it? We have a lot of examples here. So you can learn from examples.
20:41
There's also a mailing list that you can register to. All the developers are there and fairly quick to respond. Otherwise, if you are looking for training, there is a bunch of company that offers training and support that you can contact.
21:04
But from an open source perspective, feel free to ask questions on the mailing list and to try the examples. Questions? Yes.
21:22
So all your examples right now currently use Open Layers 2? All the examples are currently using Open Layers 2, yes. All the work to use other libraries are in different branches than master. Thanks. So the example you showed about editing.
21:43
So that front end editing would communicate with REST API, I suppose, and then to persist changes. Was that the case? It's not the case in that example because all the data is on the client side. But in the different project that we did,
22:00
you can use either a custom REST API or a WFS standard server. There was another question in the back.
22:21
I've used GeoX2 to develop, and that's great. I really like it. But have you made a conscious decision to stick with EXT? In the beginning? Now going forward, you've stuck with 4, and you'll port to 5. Have you thought about maybe changing, using a different framework, so having GeoAngular?
22:43
We've had a lot of discussion about that. Some developers decided to pass to something else. Personally, and at our company, we decided to not do everything with EXT because it responds to a really specific problem, which
23:02
is creating big, large applications or dashboard applications or desktop-like applications on the web. And if you want to have a small web application with only small pop-ups and a few
23:21
interactions, then it may be easier to use something else like Bootstrap or jQuery UI. But it's really a matter of personal preference. We will continue to use XJS and GeoXT in big projects,
23:42
and we will continue to use other libraries as well in projects where they fit. Thank you very much.