Introduction
As we approach the end of the exciting 13 week period of the Google Summer of Code, our proposed project wps-ng has successfully fulfilled the expectations we had set forth in the beginning. With our new Client Library deployed on NPM (wps-ng), the future angular clients using this library will be able to employ standard OGC Web Processing Services along with the numerous benefits of Typescript’s static typing. We also developed a client to demonstrate the library use case and serve as a boilerplate starter for Angular projects.
Quick Links to the Project Details
Major Tasks Achieved
The entire source code repository for this project is available on Github as wps-js-ng. The following is the list of goals met by the project.
- Created OGC WPS Model Objects and Standard Services and published the completed wps-ng library on NPM.
- In the process of publishing wps-ng, we also published the existing 52°North wps-js library on NPM.
- Developed a sample client called wps-js-ng to use wps-ng library.
- Created a detailed User Documentation in the porject’s readme.md file.
- Wrote a total of 3 blogs (including this one):
- Wrote weekly reports for the progress during these 13 weeks.
- Contributed Section for wps-ng, so future developers could add and publish code.
- Developed a Demo Client application hosted on Github pages.
Facets within the wps-ng Library
- We started with the vision that our library would support all the OGC WPS functionalities, such as GetCapabilities, DescribeProcess, and Execute, and also developed the corresponding Typings for all the functionalities we use from the wps-js library.
- In addition, the library has the Model Objects that can be imported and serve as the Request and Response Class Objects for all the OGC WPS functionality we support.
- The detailed functionalities and the Model Objects description are available in the project’s readme.md file.
- We also provide ready to use snippets in Angular, which can be copied from the readme.md file to call particular service functions. Click here for some of these examples.
- Finally, the Github Pages Live client has several sections, such as Get Capabilities and Execute Process.
Technical Challenges During Development Phase
While the final product we intended to build was completed on time, we faced two challenges during development.
- First, we wanted to extend the library to features already developed in wps-js by importing its minified javascript file. This would save a lot of time and code duplication in our library wps-ng. It is easy to import a javascript file in an Angular CLI application using the “scripts” tag, however it was a challenge to import it into an Angular Library. After analysis and search, I came across a few libraries (such as this) that circumvent this issue by adding one extra step in the installation of the library. See our readme installation section.
- A second, relatively small challenge was to use the Typings Framework to define types of all the functions for wps-js. There were numerous resources available to tackle this issue and I was able to resolve this in less than a week.
The Demo Angular Client Using our Library wps-ng
We have also built a client employing our library. It is currently hosted on Github Pages. The client covers almost all the functionality that is available in the library. Below are the screenshots of the four major WPS features in the client, demonstrating the request/response objects.
Get Capabilities:
The Screenshot below shows the Capabilities Nav. A user may select URL and version to fetch any WPS server’s capabilities, and see the response on the right.
Process Description:
This screenshot below shows the process description module, in which a user may select any one of the processes from the capabilities and fetch the process description.
Execute Process:
The Execute Nav demonstrates the execute process functionality. The user may input data into the sample Echo Process and see the same response on the right screen in JSON.
Status and Result:
The get status and result section similarly show the Status and Result on the right given the JobId.
Comments and Future Work
Like any other project, there is always a scope of enhancement. Below is the list of things that could be implemented next:
- The wps-ng library could be expanded to support the latest Json request and Response. Currently, the wps-ng only communicates with the server in XML format.
- The Execute Process part of the client could be made dynamic. Currently, it is static and supports only one process i.e. Echo Process.
Personal Summary
I consider myself fortunate to have gotten the opportunity to work with 52°North. I learned several new nitty-gritty functions of Angular and Typescript, which has really helped me broaden my vision of UI development. I also enjoyed getting familiar with the field of Geo-Informatics and OGC Web Processing Services. In my opinion, it is a great community for Geospatial Information and Standards.
I believe that the guidance provided by the 52°North team has been essential to the successful delivery of the project. I would thank the entire 52°North team for their valuable feedback and for making me familiar with the entire development process at 52°North.
I would especially like to thank my mentor Benjamin Pross who answered all my doubts in a timely manner and welcomed any new ideas I had about the project. Benjamin was also available for conference calls in case I needed some detailed clarification or while I was stuck. I would also like to thank Ann Hitchcock for providing me feedback on the monthly blogs published.
Leave a Reply