I have a data with an unknown coordinate system. The coordinates has 10 digits left of the decimal. Its unit is equivalent to about a cm. The data is for Tehran(Iran), boundaries of Tehran are about 35.54 to 35.84 N and 51.19 to 51.84 E in decimal degrees. The boundaries in this coordinate system are 1499559806.00 to 1496487278.00 N and 604413102.00 to 609510913.00 E.
2 Answers
Checking http://twcc.fr/en/#, accepting that centimetres would have to be interpreted as metres.
Closest was in some of the Costa Rican systems - http://twcc.fr/en/?sc=CR%253ANS&dc=EPSG%253A2195&wgs84=62.88418515856389%252C31.505380207507326&z=8&mt=terrain - but the coordinates are in Afghanistan.
Since there does not seem to be an official CRS, this is my best try:
Calculate the extent in UTM 39N and local units:
59:33 km vs 5097811:3072528 units
So centimeters might be a good guess.
Calculate the center coordinates in degrees and local units:
51.515°E 35.69°N vs X=606962008 Y=1498023542
Build a custom tmerc projection on that point. The false Easting and Northing must be in meters for proj.4:
+proj=tmerc +lat_0=35.69 +lon_0=51.515 +x_0=6069620.08 +y_0=14980235.42 +k=1 +ellps=WGS84 +units=cm +no_defs
Load the degree data in WGS84 (green) and local units data in the custom CRS (red):
Offsets are up to 4 km, so let's improve the centimeter guess:
59000/5097811 = 0.011574 units per meter
33000/3072528 = 0.010740 units per meter
So we can use an average value of 0.011157 units per meter as +to_meter
value.
False Easting and Northing have to be multiplied by it to get meters:
606962008 * 0.011157 = 6771875 m
1498023542 * 0.011157 = 16713449 m
The improved proj.4 string is now:
+proj=tmerc +lat_0=35.69 +lon_0=51.515 +x_0=6771875 +y_0=16713449 +k=1 +ellps=WGS84 +to_meter=0.011157 +no_defs
and the offset is less than 1 km:
If you have vector data, you can use the QGIS Vector Bender plugin to stretch the data to the real points.