We're sorry but this page doesn't work properly without JavaScript enabled. Please enable it to continue.
Feedback

GeoExt2 Ð Past, Present and Future

00:00

Formal Metadata

Title
GeoExt2 Ð Past, Present and Future
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
Publisher
Release Date
Language
Producer
Production Year2014
Production PlacePortland, Oregon, United States of America

Content Metadata

Subject Area
Genre
Abstract
GeoExt is Open Source and enables building desktop-like GIS applications through the web. It is a JavaScript framework that combines the GIS functionality of OpenLayers with the user interface savvy of the ExtJS library provided by Sencha.Version 2 of GeoExt (http://geoext.github.io/geoext2/, released in October 2013) is the successor to the GeoExt 1.x-series and is built atop the newest official installments of its base libraries; OpenLayers 2.13.1 and ExtJS 4.2.1.The talk of two GeoExt core developers and members of the PSC (Project Steering Committee) will shortly present the history of the project with a focus on how an international code sprint back in May 2012 lay the foundations of the 2.x-series of GeoExt. The current version will be presented and and we'll discuss new features and important changes for users of the framework. Especially the following aspects will be portrayed:- Usage of the new classes- Compatibility with the single-file build tool of Sencha- Integration into the ExtJS MVC (Model-View-Controller) architecture- Better API-documentation- Easier theming of ExtJS/GeoExt applicationsAs both of the base libraries are about to release new major versions Ð OpenLayers 3 and ExtJS 5 are very near to be being released in stable versions Ð the last focus of the talk will be the future development of the GeoExt 2 framework.The project has already pre-evaluated the possibility of supporting more than just one mapping library, so a future version of GeoExt might bring support for OpenLayers 3 and/or Leaflet and is likely being built on top of ExtJS 5.
Keywords
25
74
Thumbnail
29:15
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
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
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
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)
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.
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
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
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
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.
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.
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.
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,
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.
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
of what you can find here. Anyway, so GeoXT has been a really cool tool to build a very, very powerful web application.
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,
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
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.
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
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.
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.
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.
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.
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,
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
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.
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.
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.
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.
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.
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.
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
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.
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.
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
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
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.
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
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.
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
will adjust to the scale, to the right scale it's supposed to be. We can also rotate it, rotate it, sorry, rotate it
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.
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.
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
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
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.
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.
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
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.
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.
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
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
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
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.
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.
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
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
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.
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.
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
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
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.
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.
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
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?
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.
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.
But from an open source perspective, feel free to ask questions on the mailing list and to try the examples. Questions? Yes.
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.
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,
you can use either a custom REST API or a WFS standard server. There was another question in the back.
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?
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
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
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,
and we will continue to use other libraries as well in projects where they fit. Thank you very much.