GSoC 18: istSOS-Support of Unit Of Measure conversion in istSOS3

This is where I'll be posting information about istSOS-Support of Unit Of Measure conversion in istSOS3 GSoC 2018 project to the OSGeo community.
== Introduction ==
The aim of my project primarily is to add conversion of the unit of measure in istSOS3. The user can convert unit in another specified unit. For Unit of measure conversion in istSOS3 we will add pint libraries which has a powerful feature of unit conversion along with many specified functions like pressure, temperature, height, velocity, distance, humidity and rain unit conversion function instantly.
=== Idea ===
istSOS has gone through a lot of improvements since 2009. This has somehow affected the simplified interaction with measurements and SOS service settings.
== Project ==
Title: istSOS-Support of Unit Of Measure conversion in istSOS3.
Student: Rahul Chauhan
Mentors: Massimiliano Cannata, Milan Antonovic.
== Details ==
The development process can be monitored at the following links:
* https://summerofcode.withgoogle.com/projects/#5340786099486720 - Project GSoC 2018 application Link
* https://github.com/istSOS/istsos3 - Project Main Repo. Link
* https://github.com/rahulworld/istsos3 - Forked Github Repo. Link
* https://github.com/rahulworld/Support-of-Unit-Of-Measure-conversion-in-istSOS3 - Project GitHub testing Repo. Link
== Implementation details ==
=== PINT ===
Pint is a Python package to define, operate and manipulate physical quantities: the product of a numerical value and a unit of measurement. It allows arithmetic operations between them and conversions from and to different units.
It runs in Python 2.7 and 3.3+ with no other dependency.
It supports a lot of numpy mathematical operations without monkey patching or wrapping numpy.
=== PostgreSQL-unit ===
postgresql-unit implements a PostgreSQL datatype for SI units, plus byte. The eight base units can be combined to arbitrarily complex derived units using operators defined in the PostgreSQL type system. SI and IEC binary prefixes are used for input and output, and quantities can be converted to arbitrary scale.
Unit and prefix definitions are retrieved from database tables, and new definitions can be added at run time. The extension comes with over 2500 units and over 100 prefixes found in the definitions.units file in GNU Units 2.16.
== Schedule ==
Dates 	Task
Week 1 (May, 14 - May, 20) 	PostgreSQL-unit testing on the system.
Week 2 (May, 21 - May, 27) 	unit conversion using the PostgreSQL query in istSOS3.
Week 3 (May, 28 - June, 3) 	Comparing PostgreSQL-unit and Pint.
Week 4 (June, 4 - June, 10) 	PostgreSQL-unit test in istSOS3.
Week 5 (June, 11 - June, 15) Phase 1 Evaluation 	Testing and Debugging PostgreSQL-unit in istSOS3.
Week 6 (June, 16 - June, 24) 	Pint testing on my System.
Week 7 (June, 25 - July, 1) 	Pint Testing in istSOS3.
Week 8 (July, 2 - July, 8) 	Implement Pint in istSOS3.
Week 9 (July, 9 - July, 13) Phase 2 Evaluation 	Testing and Debugging Pint in istSOS3.
Week 10 (July, 14 - July, 22) 	Comparing Pint and PostgreSQL-unit lib. for unit conversion.
Week 11 (July, 23 - July, 29) 	Testing, Debugging, Cleaning and Optimizing the codes.
Week 12 (July, 30 - August, 5) 	Take a week to scrub code, write a few test cases and test them, improve the current documentation.
Week 13 (August, 6 - August, 14) Final evaluation	Buffer period. ( Final Week. Prepare documentation for final submission.).
== Reports ==
=== Community Bonding Period ===
What did you get done?
* I have installed istsos3 and postgresql-unit on my system and testing.
* Understand Architecture of istsos3.
* Functionality of PostgreSQL and Pint libraries.
What do you plan on doing next week?
* I will implement postgresql-unit extension.
Are you blocked on anything?
* Currently, everything is going according to plan.
=== May 14 - May 20 (Week 1)===
What did I complete this week?
* Tested Postgresql-unit extension on PostgreSQL database.
* Tested Pint on the database.
What am I going to achieve for next week?
* Implementing of postgresql-unit as plugin istsos3.
Is there any blocking issue?
* Currently, everything is going according to plan.
=== May 21 - May 27 (Week 2)===
What did I complete this week?
* Implemented python script for unit conversion.
* unit conversion using the postgresql-unit query.
What am I going to achieve for next week?
* Implementing of postgresql-unit as plugin istsos3.
Is there any blocking issue?
* Currently, everything is going according to plan.
=== May 28 - June 3 (Week 3)===
What did I complete this week?
* Implemented python script for unit conversion using all common units.
What am I going to achieve for next week?
* Testing python script for unit conversion in istsos3. 
* Implementing of postgresql-unit as plugin istsos3.
Is there any blocking issue?
* Currently, everything is going according to plan.
=== June 4 - June 10 (Week 4)===
What did I complete this week?
* Implemented unit conversion(PostgreSQL-unit) using post method in istsos3.
What am I going to achieve for next week?
* Implementing post request(unit-conversion) for observation in istsos3.
Is there any blocking issue?
* Currently, everything is going according to plan.
=== June 11 - June 18 (Week 5)===
What did I complete this week?
* Implemented unit conversion(pint) using post method in istsos3.
What am I going to achieve for next week?
* Testing & Debugging pint and postgresql-unit for observation in istsos3.
Is there any blocking issue?
* Currently, everything is going according to plan.
=== June 19 - June 24 (Week 6)===
What did I complete this week?
* Implemented pint and postgresql-unit on same data and differenciate.
What am I going to achieve for next week?
* Implementing postgresql-unit for point time series observation in istsos3.
Is there any blocking issue?
* Currently, everything is going according to plan but I am stuck in insert observation in istsos3.
=== June 25 - July 1 (Week 7)===
What did I complete this week?
* Implemented unit conversion postgresql-unit for point and point time series observation.
What am I going to achieve for next week?
* Implementing postgresql-unit for Mobile TimeSeries Observation, Trajectory Observation, Profile Observation, Specimen Observation in istsos3 api.
Is there any blocking issue?
* Currently, everything is going according to plan but I am stuck in insert observation in istsos3.
=== July 2 - July 8 (Week 8)===
What did I complete this week?
* Implemented unit conversion postgresql-unit and pint observation as plugin in istsos3.
* Testing unit conversion for specimen observation using postgresql-unit and pint in istsos3.
What am I going to achieve for next week?
* Implementing postgresql-unit and pint for Mobile TimeSeries Observation, Trajectory Observation, Profile Observation in istsos3 api.
Is there any blocking issue?
* Currently, everything is going according to plan but I am stuck in insert observation in istsos3.
=== July 9 - July 15 (Week 9)===
What did I complete this week?
* Fixing issue with pint for temperature unit conversion in istsos3.
* Testing unit conversion for specimen observation using postgresql-unit and pint in istsos3.
What am I going to achieve for next week?
* Implementing postgresql-unit and pint for Mobile TimeSeries Observation, Trajectory Observation in istsos3 api.
* Fix the issue error in unit conversion data from postgresql in istsos3. 
Is there any blocking issue?
* Currently, everything is going according to plan.
=== July 16 - July 22 (Week 10)===
What did I complete this week?
* Fixed issue ambiguous with pint for temperature unit conversion in istsos3.
* Fixed issue temperature unit conversion with large data in postgresql-unit.
* Testing unit conversion for specimen and profie observation using postgresql-unit and pint in istsos3.
What am I going to achieve for next week?
* Implementing postgresql-unit and pint for Trajectory Observation in istsos3 api.
* Adding Lookup Table for units.
Is there any blocking issue?
* Currently, everything is going according to plan.
=== July 23 - July 29 (Week 11)===
What did I complete this week?
* Implemented Addition, Subtraction, multiplication and division of unit and magnitude in istsos3.
* Implemented Download file after unit conversion in istsos3.
* Added Lookup table.
* Testing unit conversion for specimen and profie observation using postgresql-unit and pint in istsos3.
What am I going to achieve for next week?
* Implementing postgresql-unit and pint for Trajectory Observation in istsos3 api.
Is there any blocking issue?
* Currently, everything is going according to plan.
=== July 30 - Aug 5 (Week 12)===
What did I complete this week?
* Testing, Debugging, Cleaning and Optimizing the codes.
What am I going to achieve for next week?
* Prepare documentation for final submission
* Cleaning and Optimizing the codes.
Is there any blocking issue?
* Currently, everything is going according to plan.
== Student's Biography ==
My name is Rahul Chauhan. I am final year Computer Science & Engineering student at National Institute of Technology, Srinagar, India. 
Some more information about me can be obtained by following the link: http://rahulchauhan.net
Category: Google Summer of Code