अक्षांश, देशांतर (epsg: 4326) को EPSG: 3857 में बदलना


11

मैं गणित का अध्ययन करना चाह रहा हूँ, यह देखने के लिए कि दशमलव डिग्री में दिए गए अक्षांश और देशांतर को EPSG: 3857 में कैसे बदला जा सकता है। क्या कोई भी गणित की जाँच के लिए एक अच्छे संदर्भ या संभावित Ppython / C / C ++ / Java लाइब्रेरी सोर्स कोड को इंगित कर सकता है?


पर Lool pyproj बहुत बार जीआईएस एसई पर इस्तेमाल किया
जीन

गणित के साथ अजगर कोड के लिए twms.googlecode.com/hg/twms/projections.py
Mapperz

जवाबों:



4

यह कोड स्निपेट C # है और एक सरणी का उपयोग करके वर्टेक्स नामक पकड़ को [x, y]

double smRadius = 6378136.98;
double smRange = smRadius * Math.PI * 2.0;
double smLonToX = smRange / 360.0;
double smRadiansOverDegrees = Math.PI / 180.0;

...

// compute x-map-unit
vertex[0] *= smLonToX;

double y = vertex[1];

// compute y-map-unit
if (y > 86.0)
{
    vertex[1] = smRange;
}
else if (y < -86.0)
{
    vertex[1] = -smRange;
}
else
{
    y *= smRadiansOverDegrees;
    y = Math.Log(Math.Tan(y) + (1.0 / Math.Cos(y)), Math.E);
    vertex[1] = y * smRadius; 
}

0

ICS पर @Russel के जवाब के बाद। आज मैंने wgs84 (epsg: 4326) को wgs84 / pseudo मर्चेंट (epsg: 3857) में समन्वयित करने के लिए उनके कोड को फिर से लिखा है:

vertex = list(x_coordinate, y_coordinate)
smRadius = 6378136.98
smRange = smRadius * pi * 2.0
smLonToX = smRange / 360.0
smRadiansOverDegrees = pi / 180.0

vertex[[1]] = vertex[[1]] *smLonToX

y = vertex[[2]]

if (y > 86.0){
  vertex[[2]] = smRange
} else if (y < -86.0){
  vertex[[2]] = -smRange
} else {
  y = y * smRadiansOverDegrees
  y = log(tan(y) + (1.0 / cos(y)), base = exp(1))
  vertex[[2]] = y * smRadius
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.