I have a huge GIS related project with multiple parts which was originally developed for metric usage (meters).
Now I need to make a comprehensive audit of the system to come up with a plan to let it support imperial unit (feet) natively (not just convert at the display end because of accuracy concern).
What is a good way to support multiple units for a system?
The application has a Java backend, JS web client, PostgreSQL database and many scripts in python, C++ and Perl)
In our software you can create multiple "projects" and ideally I want to set "metric" or "imperial" while initialising a project so this project will stick to this unit (unlikely to switch after init). This means the software should support two units at the same time. Nonetheless, we actually deploy isolated server for each project(client) so that it's still acceptable to make it a higher level switch that make one deployment supports metric or imperial only.
Edit 2: The values are not just stored and displayed as the application have a lot of calculation using these numbers.
Edit 3: More background info as I did more research. The one I need to support is survey foot(1200⁄3937m) as it is more widely used than international foot (exactly 0.3048m) for mapping.
Survey foot: When the international foot was defined in 1959, a great deal of survey data was already available based on the former definitions, especially in the United States and in India. The small difference between the survey and the international foot would not be detectable on a survey of a small parcel, but becomes significant for mapping, or when the state plane coordinate system (SPCS) is used in the US, because the origin of the system may be hundreds of thousands of feet (hundreds of miles) from the point of interest. Hence the previous definitions continued to be used for surveying in the United States and India for many years, and are denoted survey feet to distinguish them from the international foot.