1
0
mirror of https://github.com/tumic0/GPXSee.git synced 2024-11-28 05:34:47 +01:00

Added support for oblique stereographic projections

This commit is contained in:
Martin Tůma 2019-02-15 20:32:13 +01:00
parent d168fd8cd5
commit ec9d81c65a
6 changed files with 141 additions and 2 deletions

View File

@ -156,7 +156,8 @@ HEADERS += src/common/config.h \
src/data/slfparser.h \ src/data/slfparser.h \
src/data/dem.h \ src/data/dem.h \
src/data/polygon.h \ src/data/polygon.h \
src/data/area.h src/data/area.h \
src/map/obliquestereographic.h
SOURCES += src/main.cpp \ SOURCES += src/main.cpp \
src/common/coordinates.cpp \ src/common/coordinates.cpp \
src/common/rectc.cpp \ src/common/rectc.cpp \
@ -269,7 +270,8 @@ SOURCES += src/main.cpp \
src/data/locparser.cpp \ src/data/locparser.cpp \
src/data/slfparser.cpp \ src/data/slfparser.cpp \
src/data/dem.cpp \ src/data/dem.cpp \
src/data/polygon.cpp src/data/polygon.cpp \
src/map/obliquestereographic.cpp
greaterThan(QT_MAJOR_VERSION, 4) { greaterThan(QT_MAJOR_VERSION, 4) {
HEADERS += src/data/geojsonparser.h HEADERS += src/data/geojsonparser.h

View File

@ -5,6 +5,7 @@ Montserrat 1958 / British West Indies Grid,2004,4604,19942,9001,9807,4400,8801,0
St. Kitts 1955 / British West Indies Grid,2005,4605,19942,9001,9807,4400,8801,0,9102,8802,-62,9102,8805,0.9995,9201,8806,400000,9001,8807,0,9001,,,,,, St. Kitts 1955 / British West Indies Grid,2005,4605,19942,9001,9807,4400,8801,0,9102,8802,-62,9102,8805,0.9995,9201,8806,400000,9001,8807,0,9001,,,,,,
St. Lucia 1955 / British West Indies Grid,2006,4606,19942,9001,9807,4400,8801,0,9102,8802,-62,9102,8805,0.9995,9201,8806,400000,9001,8807,0,9001,,,,,, St. Lucia 1955 / British West Indies Grid,2006,4606,19942,9001,9807,4400,8801,0,9102,8802,-62,9102,8805,0.9995,9201,8806,400000,9001,8807,0,9001,,,,,,
St. Vincent 45 / British West Indies Grid,2007,4607,19942,9001,9807,4400,8801,0,9102,8802,-62,9102,8805,0.9995,9201,8806,400000,9001,8807,0,9001,,,,,, St. Vincent 45 / British West Indies Grid,2007,4607,19942,9001,9807,4400,8801,0,9102,8802,-62,9102,8805,0.9995,9201,8806,400000,9001,8807,0,9001,,,,,,
NAD83(CSRS98) / New Brunswick Stereo,2036,4140,19946,9001,9809,4500,8801,46.3,9110,8802,-66.3,9110,8805,0.999912,9201,8806,2500000,9001,8807,7500000,9001,,,,,,
NAD83(CSRS98) / UTM zone 19N,2037,4140,16019,9001,9807,4400,8801,0,9102,8802,-69,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,, NAD83(CSRS98) / UTM zone 19N,2037,4140,16019,9001,9807,4400,8801,0,9102,8802,-69,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,
NAD83(CSRS98) / UTM zone 20N,2038,4140,16020,9001,9807,4400,8801,0,9102,8802,-63,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,, NAD83(CSRS98) / UTM zone 20N,2038,4140,16020,9001,9807,4400,8801,0,9102,8802,-63,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,
Israel 1993 / Israeli TM Grid,2039,4141,18204,9001,9807,4400,8801,31.4403817,9110,8802,35.1216261,9110,8805,1.0000067,9201,8806,219529.584,9001,8807,626907.39,9001,,,,,, Israel 1993 / Israeli TM Grid,2039,4141,18204,9001,9807,4400,8801,31.4403817,9110,8802,35.1216261,9110,8805,1.0000067,9201,8806,219529.584,9001,8807,626907.39,9001,,,,,,
@ -113,6 +114,10 @@ Pulkovo 1942(83) / Gauss Kruger zone 4,2167,4178,16264,9001,9807,4530,8801,0,910
Pulkovo 1942(83) / Gauss Kruger zone 5,2168,4178,16265,9001,9807,4530,8801,0,9102,8802,15,9102,8805,1,9201,8806,5500000,9001,8807,0,9001,,,,,, Pulkovo 1942(83) / Gauss Kruger zone 5,2168,4178,16265,9001,9807,4530,8801,0,9102,8802,15,9102,8805,1,9201,8806,5500000,9001,8807,0,9001,,,,,,
Luxembourg 1930 / Gauss,2169,4181,19966,9001,9807,4530,8801,49.5,9110,8802,6.1,9110,8805,1,9201,8806,80000,9001,8807,100000,9001,,,,,, Luxembourg 1930 / Gauss,2169,4181,19966,9001,9807,4530,8801,49.5,9110,8802,6.1,9110,8805,1,9201,8806,80000,9001,8807,100000,9001,,,,,,
MGI / Slovenia Grid,2170,4312,19967,9001,9807,4530,8801,0,9110,8802,15,9110,8805,0.9999,9201,8806,500000,9001,8807,0,9001,,,,,, MGI / Slovenia Grid,2170,4312,19967,9001,9807,4530,8801,0,9110,8802,15,9110,8805,0.9999,9201,8806,500000,9001,8807,0,9001,,,,,,
Pulkovo 1942(58) / Poland zone I,2171,4179,18281,9001,9809,4530,8801,50.373,9110,8802,21.05,9110,8805,0.9998,9201,8806,4637000,9001,8807,5647000,9001,,,,,,
Pulkovo 1942(58) / Poland zone II,2172,4179,18282,9001,9809,4530,8801,53.0007,9110,8802,21.301,9110,8805,0.9998,9201,8806,4603000,9001,8807,5806000,9001,,,,,,
Pulkovo 1942(58) / Poland zone III,2173,4179,18283,9001,9809,4530,8801,53.35,9110,8802,17.003,9110,8805,0.9998,9201,8806,3501000,9001,8807,5999000,9001,,,,,,
Pulkovo 1942(58) / Poland zone IV,2174,4179,18284,9001,9809,4530,8801,51.4015,9110,8802,16.402,9110,8805,0.9998,9201,8806,3703000,9001,8807,5627000,9001,,,,,,
Pulkovo 1942(58) / Poland zone V,2175,4179,18285,9001,9807,4530,8801,0,9110,8802,18.573,9110,8805,0.999983,9201,8806,237000,9001,8807,-4700000,9001,,,,,, Pulkovo 1942(58) / Poland zone V,2175,4179,18285,9001,9807,4530,8801,0,9110,8802,18.573,9110,8805,0.999983,9201,8806,237000,9001,8807,-4700000,9001,,,,,,
ETRS89 / Poland CS2000 zone 5,2176,4258,18305,9001,9807,4531,8801,0,9102,8802,15,9102,8805,0.999923,9201,8806,5500000,9001,8807,0,9001,,,,,, ETRS89 / Poland CS2000 zone 5,2176,4258,18305,9001,9807,4531,8801,0,9102,8802,15,9102,8805,0.999923,9201,8806,5500000,9001,8807,0,9001,,,,,,
ETRS89 / Poland CS2000 zone 6,2177,4258,18306,9001,9807,4531,8801,0,9102,8802,18,9102,8805,0.999923,9201,8806,6500000,9001,8807,0,9001,,,,,, ETRS89 / Poland CS2000 zone 6,2177,4258,18306,9001,9807,4531,8801,0,9102,8802,18,9102,8805,0.999923,9201,8806,6500000,9001,8807,0,9001,,,,,,
@ -215,6 +220,7 @@ NAD83 / Washington South (ftUS),2286,4269,15368,9003,9802,4497,8821,45.2,9110,88
NAD83 / Wisconsin North (ftUS),2287,4269,15369,9003,9802,4497,8821,45.1,9110,8822,-90,9110,8823,46.46,9110,8824,45.34,9110,8826,1968500,9003,8827,0,9003,,, NAD83 / Wisconsin North (ftUS),2287,4269,15369,9003,9802,4497,8821,45.1,9110,8822,-90,9110,8823,46.46,9110,8824,45.34,9110,8826,1968500,9003,8827,0,9003,,,
NAD83 / Wisconsin Central (ftUS),2288,4269,15370,9003,9802,4497,8821,43.5,9110,8822,-90,9110,8823,45.3,9110,8824,44.15,9110,8826,1968500,9003,8827,0,9003,,, NAD83 / Wisconsin Central (ftUS),2288,4269,15370,9003,9802,4497,8821,43.5,9110,8822,-90,9110,8823,45.3,9110,8824,44.15,9110,8826,1968500,9003,8827,0,9003,,,
NAD83 / Wisconsin South (ftUS),2289,4269,15371,9003,9802,4497,8821,42,9110,8822,-90,9110,8823,44.04,9110,8824,42.44,9110,8826,1968500,9003,8827,0,9003,,, NAD83 / Wisconsin South (ftUS),2289,4269,15371,9003,9802,4497,8821,42,9110,8822,-90,9110,8823,44.04,9110,8824,42.44,9110,8826,1968500,9003,8827,0,9003,,,
NAD83(CSRS98) / Prince Edward Isl. Stereographic (NAD83),2292,4140,19960,9001,9809,4496,8801,47.15,9110,8802,-63,9110,8805,0.999912,9201,8806,400000,9001,8807,800000,9001,,,,,,
Batavia / TM 109 SE,2308,4211,16709,9001,9807,4400,8801,0,9102,8802,109,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,, Batavia / TM 109 SE,2308,4211,16709,9001,9807,4400,8801,0,9102,8802,109,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,
WGS 84 / TM 116 SE,2309,4326,16716,9001,9807,4400,8801,0,9102,8802,116,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,, WGS 84 / TM 116 SE,2309,4326,16716,9001,9807,4400,8801,0,9102,8802,116,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,
WGS 84 / TM 132 SE,2310,4326,16732,9001,9807,4400,8801,0,9102,8802,132,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,, WGS 84 / TM 132 SE,2310,4326,16732,9001,9807,4400,8801,0,9102,8802,132,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,
@ -793,6 +799,8 @@ NAD83(CSRS) / MTM zone 7,2949,4617,17707,9001,9807,4496,8801,0,9110,8802,-70.3,9
NAD83(CSRS) / MTM zone 8,2950,4617,17708,9001,9807,4496,8801,0,9110,8802,-73.3,9110,8805,0.9999,9201,8806,304800,9001,8807,0,9001,,,,,, NAD83(CSRS) / MTM zone 8,2950,4617,17708,9001,9807,4496,8801,0,9110,8802,-73.3,9110,8805,0.9999,9201,8806,304800,9001,8807,0,9001,,,,,,
NAD83(CSRS) / MTM zone 9,2951,4617,17709,9001,9807,4496,8801,0,9110,8802,-76.3,9110,8805,0.9999,9201,8806,304800,9001,8807,0,9001,,,,,, NAD83(CSRS) / MTM zone 9,2951,4617,17709,9001,9807,4496,8801,0,9110,8802,-76.3,9110,8805,0.9999,9201,8806,304800,9001,8807,0,9001,,,,,,
NAD83(CSRS) / MTM zone 10,2952,4617,17710,9001,9807,4496,8801,0,9110,8802,-79.3,9110,8805,0.9999,9201,8806,304800,9001,8807,0,9001,,,,,, NAD83(CSRS) / MTM zone 10,2952,4617,17710,9001,9807,4496,8801,0,9110,8802,-79.3,9110,8805,0.9999,9201,8806,304800,9001,8807,0,9001,,,,,,
NAD83(CSRS) / New Brunswick Stereographic,2953,4617,19946,9001,9809,4500,8801,46.3,9110,8802,-66.3,9110,8805,0.999912,9201,8806,2500000,9001,8807,7500000,9001,,,,,,
NAD83(CSRS) / Prince Edward Isl. Stereographic (NAD83),2954,4617,19960,9001,9809,4496,8801,47.15,9110,8802,-63,9110,8805,0.999912,9201,8806,400000,9001,8807,800000,9001,,,,,,
NAD83(CSRS) / UTM zone 11N,2955,4617,16011,9001,9807,4400,8801,0,9102,8802,-117,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,, NAD83(CSRS) / UTM zone 11N,2955,4617,16011,9001,9807,4400,8801,0,9102,8802,-117,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,
NAD83(CSRS) / UTM zone 12N,2956,4617,16012,9001,9807,4400,8801,0,9102,8802,-111,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,, NAD83(CSRS) / UTM zone 12N,2956,4617,16012,9001,9807,4400,8801,0,9102,8802,-111,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,
NAD83(CSRS) / UTM zone 13N,2957,4617,16013,9001,9807,4400,8801,0,9102,8802,-105,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,, NAD83(CSRS) / UTM zone 13N,2957,4617,16013,9001,9807,4400,8801,0,9102,8802,-105,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,
@ -940,6 +948,7 @@ MAGNA-SIRGAS / Colombia Bogota zone,3116,4686,18057,9001,9807,4500,8801,4.354632
MAGNA-SIRGAS / Colombia East Central zone,3117,4686,18058,9001,9807,4500,8801,4.35463215,9110,8802,-71.04390285,9110,8805,1,9201,8806,1000000,9001,8807,1000000,9001,,,,,, MAGNA-SIRGAS / Colombia East Central zone,3117,4686,18058,9001,9807,4500,8801,4.35463215,9110,8802,-71.04390285,9110,8805,1,9201,8806,1000000,9001,8807,1000000,9001,,,,,,
MAGNA-SIRGAS / Colombia East zone,3118,4686,18059,9001,9807,4500,8801,4.35463215,9110,8802,-68.04390285,9110,8805,1,9201,8806,1000000,9001,8807,1000000,9001,,,,,, MAGNA-SIRGAS / Colombia East zone,3118,4686,18059,9001,9807,4500,8801,4.35463215,9110,8802,-68.04390285,9110,8805,1,9201,8806,1000000,9001,8807,1000000,9001,,,,,,
Douala 1948 / AEF west,3119,4192,18415,9001,9807,4400,8801,0,9110,8802,10.3,9110,8805,0.999,9201,8806,1000000,9001,8807,1000000,9001,,,,,, Douala 1948 / AEF west,3119,4192,18415,9001,9807,4400,8801,0,9110,8802,10.3,9110,8805,0.999,9201,8806,1000000,9001,8807,1000000,9001,,,,,,
Pulkovo 1942(58) / Poland zone I,3120,4179,18280,9001,9809,4530,8801,50.373,9110,8802,21.05,9110,8805,0.9998,9201,8806,4637000,9001,8807,5467000,9001,,,,,,
PRS92 / Philippines zone 1,3121,4683,18171,9001,9807,4499,8801,0,9102,8802,117,9102,8805,0.99995,9201,8806,500000,9001,8807,0,9001,,,,,, PRS92 / Philippines zone 1,3121,4683,18171,9001,9807,4499,8801,0,9102,8802,117,9102,8805,0.99995,9201,8806,500000,9001,8807,0,9001,,,,,,
PRS92 / Philippines zone 2,3122,4683,18172,9001,9807,4499,8801,0,9102,8802,119,9102,8805,0.99995,9201,8806,500000,9001,8807,0,9001,,,,,, PRS92 / Philippines zone 2,3122,4683,18172,9001,9807,4499,8801,0,9102,8802,119,9102,8805,0.99995,9201,8806,500000,9001,8807,0,9001,,,,,,
PRS92 / Philippines zone 3,3123,4683,18173,9001,9807,4499,8801,0,9102,8802,121,9102,8805,0.99995,9201,8806,500000,9001,8807,0,9001,,,,,, PRS92 / Philippines zone 3,3123,4683,18173,9001,9807,4499,8801,0,9102,8802,121,9102,8805,0.99995,9201,8806,500000,9001,8807,0,9001,,,,,,
@ -1127,6 +1136,7 @@ CSG67 / UTM zone 21N,3312,4623,16021,9001,9807,4400,8801,0,9102,8802,-57,9102,88
RGFG95 / UTM zone 21N,3313,4624,16021,9001,9807,4400,8801,0,9102,8802,-57,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,, RGFG95 / UTM zone 21N,3313,4624,16021,9001,9807,4400,8801,0,9102,8802,-57,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,
Katanga 1955 / Katanga Lambert,3314,4695,17401,9001,9802,4400,8821,0,9102,8822,26,9102,8823,-6.5,9102,8824,-11.5,9102,8826,0,9001,8827,0,9001,,, Katanga 1955 / Katanga Lambert,3314,4695,17401,9001,9802,4400,8821,0,9102,8822,26,9102,8823,-6.5,9102,8824,-11.5,9102,8826,0,9001,8827,0,9001,,,
Katanga 1955 / Katanga TM,3315,4695,17402,9001,9807,4400,8801,-9,9102,8802,26,9102,8805,0.9998,9201,8806,0,9001,8807,0,9001,,,,,, Katanga 1955 / Katanga TM,3315,4695,17402,9001,9807,4400,8801,-9,9102,8802,26,9102,8805,0.9998,9201,8806,0,9001,8807,0,9001,,,,,,
Pulkovo 1942(58) / GUGiK-80,3328,4179,18286,9001,9809,4530,8801,52.1,9110,8802,19.1,9110,8805,0.999714,9201,8806,500000,9001,8807,500000,9001,,,,,,
Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 5,3329,4179,16265,9001,9807,4530,8801,0,9102,8802,15,9102,8805,1,9201,8806,5500000,9001,8807,0,9001,,,,,, Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 5,3329,4179,16265,9001,9807,4530,8801,0,9102,8802,15,9102,8805,1,9201,8806,5500000,9001,8807,0,9001,,,,,,
Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 6,3330,4179,16266,9001,9807,4530,8801,0,9102,8802,18,9102,8805,1,9201,8806,6500000,9001,8807,0,9001,,,,,, Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 6,3330,4179,16266,9001,9807,4530,8801,0,9102,8802,18,9102,8805,1,9201,8806,6500000,9001,8807,0,9001,,,,,,
Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 7,3331,4179,16267,9001,9807,4530,8801,0,9102,8802,21,9102,8805,1,9201,8806,7500000,9001,8807,0,9001,,,,,, Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 7,3331,4179,16267,9001,9807,4530,8801,0,9102,8802,21,9102,8805,1,9201,8806,7500000,9001,8807,0,9001,,,,,,
@ -1585,6 +1595,7 @@ Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 10,3840,4179,16270,9001,9807,4530,
Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 6,3841,4178,16266,9001,9807,4530,8801,0,9102,8802,18,9102,8805,1,9201,8806,6500000,9001,8807,0,9001,,,,,, Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 6,3841,4178,16266,9001,9807,4530,8801,0,9102,8802,18,9102,8805,1,9201,8806,6500000,9001,8807,0,9001,,,,,,
Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 7,3842,4178,16266,9001,9807,4530,8801,0,9102,8802,18,9102,8805,1,9201,8806,6500000,9001,8807,0,9001,,,,,, Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 7,3842,4178,16266,9001,9807,4530,8801,0,9102,8802,18,9102,8805,1,9201,8806,6500000,9001,8807,0,9001,,,,,,
Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 8,3843,4178,16266,9001,9807,4530,8801,0,9102,8802,18,9102,8805,1,9201,8806,6500000,9001,8807,0,9001,,,,,, Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 8,3843,4178,16266,9001,9807,4530,8801,0,9102,8802,18,9102,8805,1,9201,8806,6500000,9001,8807,0,9001,,,,,,
Pulkovo 1942(58) / Stereo70,3844,4179,19926,9001,9809,4530,8801,46,9102,8802,25,9102,8805,0.99975,9201,8806,500000,9001,8807,500000,9001,,,,,,
SWEREF99 / RT90 7.5 gon V emulation,3845,4619,17339,9001,9807,4530,8801,0,9110,8802,11.18225,9110,8805,1.000006,9201,8806,1500025.141,9001,8807,-667.282,9001,,,,,, SWEREF99 / RT90 7.5 gon V emulation,3845,4619,17339,9001,9807,4530,8801,0,9110,8802,11.18225,9110,8805,1.000006,9201,8806,1500025.141,9001,8807,-667.282,9001,,,,,,
SWEREF99 / RT90 5 gon V emulation,3846,4619,17340,9001,9807,4530,8801,0,9110,8802,13.332256,9110,8805,1.0000058,9201,8806,1500044.695,9001,8807,-667.13,9001,,,,,, SWEREF99 / RT90 5 gon V emulation,3846,4619,17340,9001,9807,4530,8801,0,9110,8802,13.332256,9110,8805,1.0000058,9201,8806,1500044.695,9001,8807,-667.13,9001,,,,,,
SWEREF99 / RT90 2.5 gon V emulation,3847,4619,17341,9001,9807,4530,8801,0,9110,8802,15.4822624306,9110,8805,1.00000561024,9201,8806,1500064.274,9001,8807,-667.711,9001,,,,,, SWEREF99 / RT90 2.5 gon V emulation,3847,4619,17341,9001,9807,4530,8801,0,9110,8802,15.4822624306,9110,8805,1.00000561024,9201,8806,1500064.274,9001,8807,-667.711,9001,,,,,,
@ -2476,6 +2487,7 @@ Corrego Alegre 1970-72 / UTM zone 23S,22523,4225,16123,9001,9807,4400,8801,0,910
Corrego Alegre 1970-72 / UTM zone 24S,22524,4225,16124,9001,9807,4400,8801,0,9102,8802,-39,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,, Corrego Alegre 1970-72 / UTM zone 24S,22524,4225,16124,9001,9807,4400,8801,0,9102,8802,-39,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,
Corrego Alegre 1970-72 / UTM zone 25S,22525,4225,16125,9001,9807,4400,8801,0,9102,8802,-33,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,, Corrego Alegre 1970-72 / UTM zone 25S,22525,4225,16125,9001,9807,4400,8801,0,9102,8802,-33,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,
Deir ez Zor / Syria Lambert,22770,4227,19948,9001,9801,4499,8801,34.39,9110,8802,37.21,9110,8805,0.9996256,9201,8806,300000,9001,8807,300000,9001,,,,,, Deir ez Zor / Syria Lambert,22770,4227,19948,9001,9801,4499,8801,34.39,9110,8802,37.21,9110,8805,0.9996256,9201,8806,300000,9001,8807,300000,9001,,,,,,
Deir ez Zor / Levant Stereographic,22780,4227,19949,9001,9809,4499,8801,38,9105,8802,43.5,9105,8805,0.9995341,9201,8806,0,9001,8807,0,9001,,,,,,
Egypt 1907 / Blue Belt,22991,4229,18071,9001,9807,4400,8801,30,9102,8802,35,9102,8805,1,9201,8806,300000,9001,8807,1100000,9001,,,,,, Egypt 1907 / Blue Belt,22991,4229,18071,9001,9807,4400,8801,30,9102,8802,35,9102,8805,1,9201,8806,300000,9001,8807,1100000,9001,,,,,,
Egypt 1907 / Red Belt,22992,4229,18072,9001,9807,4400,8801,30,9102,8802,31,9102,8805,1,9201,8806,615000,9001,8807,810000,9001,,,,,, Egypt 1907 / Red Belt,22992,4229,18072,9001,9807,4400,8801,30,9102,8802,31,9102,8805,1,9201,8806,615000,9001,8807,810000,9001,,,,,,
Egypt 1907 / Purple Belt,22993,4229,18073,9001,9807,4400,8801,30,9102,8802,27,9102,8805,1,9201,8806,700000,9001,8807,200000,9001,,,,,, Egypt 1907 / Purple Belt,22993,4229,18073,9001,9807,4400,8801,30,9102,8802,27,9102,8805,1,9201,8806,700000,9001,8807,200000,9001,,,,,,
@ -3032,6 +3044,8 @@ Pulkovo 1942 / Gauss-Kruger 30N,28490,4284,16330,9001,9807,4530,8801,0,9102,8802
Pulkovo 1942 / Gauss-Kruger 31N,28491,4284,16331,9001,9807,4530,8801,0,9102,8802,-177,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,, Pulkovo 1942 / Gauss-Kruger 31N,28491,4284,16331,9001,9807,4530,8801,0,9102,8802,-177,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,
Pulkovo 1942 / Gauss-Kruger 32N,28492,4284,16332,9001,9807,4530,8801,0,9102,8802,-171,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,, Pulkovo 1942 / Gauss-Kruger 32N,28492,4284,16332,9001,9807,4530,8801,0,9102,8802,-171,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,
Qatar 1974 / Qatar National Grid,28600,4285,19919,9001,9807,4400,8801,24.27,9110,8802,51.13,9110,8805,0.99999,9201,8806,200000,9001,8807,300000,9001,,,,,, Qatar 1974 / Qatar National Grid,28600,4285,19919,9001,9807,4400,8801,24.27,9110,8802,51.13,9110,8805,0.99999,9201,8806,200000,9001,8807,300000,9001,,,,,,
Amersfoort / RD Old,28991,4289,19913,9001,9809,4499,8801,52.0922178,9110,8802,5.23155,9110,8805,0.9999079,9201,8806,0,9001,8807,0,9001,,,,,,
Amersfoort / RD New,28992,4289,19914,9001,9809,4499,8801,52.0922178,9110,8802,5.23155,9110,8805,0.9999079,9201,8806,155000,9001,8807,463000,9001,,,,,,
SAD69 / UTM zone 18N,29118,4291,16018,9001,9807,4400,8801,0,9102,8802,-75,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,, SAD69 / UTM zone 18N,29118,4291,16018,9001,9807,4400,8801,0,9102,8802,-75,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,
SAD69 / UTM zone 19N,29119,4291,16019,9001,9807,4400,8801,0,9102,8802,-69,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,, SAD69 / UTM zone 19N,29119,4291,16019,9001,9807,4400,8801,0,9102,8802,-69,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,
SAD69 / UTM zone 20N,29120,4291,16020,9001,9807,4400,8801,0,9102,8802,-63,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,, SAD69 / UTM zone 20N,29120,4291,16020,9001,9807,4400,8801,0,9102,8802,-63,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,
@ -3150,6 +3164,8 @@ DHDN / 3-degree Gauss-Kruger zone 4,31468,4314,16264,9001,9807,4530,8801,0,9102,
DHDN / 3-degree Gauss-Kruger zone 5,31469,4314,16265,9001,9807,4530,8801,0,9102,8802,15,9102,8805,1,9201,8806,5500000,9001,8807,0,9001,,,,,, DHDN / 3-degree Gauss-Kruger zone 5,31469,4314,16265,9001,9807,4530,8801,0,9102,8802,15,9102,8805,1,9201,8806,5500000,9001,8807,0,9001,,,,,,
Conakry 1905 / UTM zone 28N,31528,4315,16028,9001,9807,4400,8801,0,9102,8802,-15,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,, Conakry 1905 / UTM zone 28N,31528,4315,16028,9001,9807,4400,8801,0,9102,8802,-15,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,
Conakry 1905 / UTM zone 29N,31529,4315,16029,9001,9807,4400,8801,0,9102,8802,-9,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,, Conakry 1905 / UTM zone 29N,31529,4315,16029,9001,9807,4400,8801,0,9102,8802,-9,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,
Dealul Piscului 1930 / Stereo 33,31600,4316,19927,9001,9809,4499,8801,45.54,9110,8802,25.23328772,9110,8805,0.9996667,9201,8806,500000,9001,8807,500000,9001,,,,,,
Dealul Piscului 1970/ Stereo 70,31700,4317,19926,9001,9809,4530,8801,46,9102,8802,25,9102,8805,0.99975,9201,8806,500000,9001,8807,500000,9001,,,,,,
NGN / UTM zone 38N,31838,4318,16038,9001,9807,4400,8801,0,9102,8802,45,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,, NGN / UTM zone 38N,31838,4318,16038,9001,9807,4400,8801,0,9102,8802,45,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,
NGN / UTM zone 39N,31839,4318,16039,9001,9807,4400,8801,0,9102,8802,51,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,, NGN / UTM zone 39N,31839,4318,16039,9001,9807,4400,8801,0,9102,8802,51,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,
KUDAMS / KTM,31900,4319,19928,9001,9807,4400,8801,0,9102,8802,48,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,, KUDAMS / KTM,31900,4319,19928,9001,9807,4400,8801,0,9102,8802,48,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,

Can't render this file because it is too large.

View File

@ -57,6 +57,7 @@
#define CT_LambertAzimEqualArea 10 #define CT_LambertAzimEqualArea 10
#define CT_AlbersEqualArea 11 #define CT_AlbersEqualArea 11
#define CT_PolarStereographic 15 #define CT_PolarStereographic 15
#define CT_ObliqueStereographic 16
#define IS_SET(map, key) \ #define IS_SET(map, key) \
@ -347,6 +348,8 @@ Projection::Method GeoTIFF::method(QMap<quint16, Value> &kv)
return Projection::Method(9822); return Projection::Method(9822);
case CT_PolarStereographic: case CT_PolarStereographic:
return Projection::Method(9829); return Projection::Method(9829);
case CT_ObliqueStereographic:
return Projection::Method(9809);
default: default:
_errorString = QString("%1: unknown coordinate transformation method") _errorString = QString("%1: unknown coordinate transformation method")
.arg(kv.value(ProjCoordTransGeoKey).SHORT); .arg(kv.value(ProjCoordTransGeoKey).SHORT);

View File

@ -0,0 +1,82 @@
#include "ellipsoid.h"
#include "obliquestereographic.h"
#define S1(x) ((1.0 + x) / (1.0 - x))
#define S2(x) ((1.0 - _e * x) / (1.0 + _e * x))
ObliqueStereographic::ObliqueStereographic(const Ellipsoid *ellipsoid,
double latitudeOrigin, double longitudeOrigin, double scale,
double falseEasting, double falseNorthing)
: _FE(falseEasting), _FN(falseNorthing)
{
double lat0 = deg2rad(latitudeOrigin);
double sinPhi0 = sin(lat0);
double cosPhi0 = cos(lat0);
double sinLat0s = sinPhi0 * sinPhi0;
double a = ellipsoid->radius();
_es = ellipsoid->es();
_e = sqrt(_es);
double rho0 = a * (1.0 - _es) / pow(1.0 - _es * sinLat0s, 1.5);
double nu0 = a / sqrt(1.0 - _es * sinLat0s);
_n = sqrt(1.0 + ((_es * pow(cosPhi0, 4)) / (1.0 - _es)));
double w1 = pow(S1(sinPhi0) * pow(S2(sinPhi0), _e), _n);
double sinChi0 = (w1 - 1) / (w1 + 1);
_c = (_n + sinPhi0) * (1.0 - sinChi0) / ((_n - sinPhi0) * (1.0 + sinChi0));
double w2 = _c * w1;
_chi0 = asin((w2 - 1.0)/(w2 + 1.0));
_sinChi0 = sin(_chi0); _cosChi0 = cos(_chi0);
_lambda0 = deg2rad(longitudeOrigin);
_twoRk0 = 2.0 * sqrt(rho0 * nu0) * scale;
_g = _twoRk0 * tan(M_PI_4 - _chi0 / 2.0);
_h = 2.0 * _twoRk0 * tan(_chi0) + _g;
}
PointD ObliqueStereographic::ll2xy(const Coordinates &c) const
{
double lon = deg2rad(c.lon());
double lat = deg2rad(c.lat());
double sinPhi = sin(lat);
double w = _c * pow(S1(sinPhi) * pow(S2(sinPhi), _e), _n);
double chi = asin((w - 1.0) / (w + 1.0));
double lambda = _n * (lon - _lambda0) + _lambda0;
double B = (1.0 + sin(chi) * _sinChi0 + cos(chi) * _cosChi0
* cos(lambda - _lambda0));
return PointD(_FE + _twoRk0 * cos(chi) * sin(lambda - _lambda0) / B,
_FN + _twoRk0 * (sin(chi) * _cosChi0 - cos(chi) * _sinChi0
* cos(lambda - _lambda0)) / B);
}
Coordinates ObliqueStereographic::xy2ll(const PointD &p) const
{
double i = atan((p.x() - _FE) / (_h + (p.y() - _FN)));
double j = atan((p.x() - _FE) / (_g - (p.y() - _FN))) - i;
double chi = _chi0 + 2.0 * atan(((p.y() - _FN) - (p.x() - _FE) * tan(j/2.0))
/ _twoRk0);
double lambda = j + 2.0 * i + _lambda0;
double psi0 = 0.5 * log((1.0 + sin(chi)) / (_c * (1.0 - sin(chi)))) / _n;
double phi1 = 2.0 * atan(pow(M_E, psi0)) - M_PI_2;
double psi, phi = phi1, prev = phi;
for (int i = 0; i < 8; i++) {
double sinPhi = sin(phi);
psi = log((tan(phi/2.0 + M_PI_4)) * pow((1.0 - _e * sinPhi)
/ (1.0 + _e * sinPhi), _e/2.0));
phi = phi - (psi - psi0) * cos(phi) * (1.0 - _es * sinPhi * sinPhi)
/ (1.0 - _es);
if (fabs(phi - prev) < 1e-10)
break;
prev = phi;
}
return Coordinates(rad2deg((lambda - _lambda0) / _n + _lambda0),
rad2deg(phi));
}

View File

@ -0,0 +1,29 @@
#ifndef OBLIQUESTEREOGRAPHIC_H
#define OBLIQUESTEREOGRAPHIC_H
#include "ct.h"
class Ellipsoid;
class ObliqueStereographic : public CT
{
public:
ObliqueStereographic(const Ellipsoid *ellipsoid, double latitudeOrigin,
double longitudeOrigin, double scale, double falseEasting,
double falseNorthing);
virtual CT *clone() const {return new ObliqueStereographic(*this);}
virtual PointD ll2xy(const Coordinates &c) const;
virtual Coordinates xy2ll(const PointD &p) const;
private:
double _e, _es;
double _chi0, _sinChi0, _cosChi0;
double _lambda0;
double _n;
double _c;
double _FE, _FN;
double _twoRk0, _g, _h;
};
#endif // OBLIQUESTEREOGRAPHIC_H

View File

@ -7,6 +7,7 @@
#include "lambertazimuthal.h" #include "lambertazimuthal.h"
#include "krovak.h" #include "krovak.h"
#include "polarstereographic.h" #include "polarstereographic.h"
#include "obliquestereographic.h"
#include "latlon.h" #include "latlon.h"
#include "gcs.h" #include "gcs.h"
#include "pcs.h" #include "pcs.h"
@ -22,6 +23,7 @@ Projection::Method::Method(int id)
case 9802: case 9802:
case 9804: case 9804:
case 9807: case 9807:
case 9809:
case 9815: case 9815:
case 9819: case 9819:
case 9820: case 9820:
@ -72,6 +74,11 @@ Projection::Projection(const PCS *pcs) : _gcs(pcs->gcs()), _units(pcs->units()),
setup.longitudeOrigin(), setup.scale(), setup.falseEasting(), setup.longitudeOrigin(), setup.scale(), setup.falseEasting(),
setup.falseNorthing()); setup.falseNorthing());
break; break;
case 9809:
_ct = new ObliqueStereographic(ellipsoid, setup.latitudeOrigin(),
setup.longitudeOrigin(), setup.scale(), setup.falseEasting(),
setup.falseNorthing());
break;
case 9819: case 9819:
_ct = new Krovak(ellipsoid, setup.standardParallel1(), _ct = new Krovak(ellipsoid, setup.standardParallel1(),
setup.standardParallel2(), setup.scale(), setup.latitudeOrigin(), setup.standardParallel2(), setup.scale(), setup.latitudeOrigin(),