অক্ষাংশ, দ্রাঘিমাংশ (epsg: 4326) কে EPSG এ রূপান্তর করা হচ্ছে: 3857?


11

দশমিক ডিগ্রিতে প্রদত্ত অক্ষাংশ এবং দ্রাঘিমাংশকে কীভাবে EPSG: 3857 এ রূপান্তর করা যায় তা দেখার জন্য আমি জড়িত গণিতটি অধ্যয়ন করতে চাই। গণিতটি পরীক্ষা করার জন্য কেউ কি কোনও ভাল রেফারেন্স বা সম্ভাব্য পপিথন / সি / সি ++ / জাভা লাইব্রেরির উত্স কোডের দিকে ইঙ্গিত করতে পারেন?


এ lool pyproj খুব প্রায়ই জিআইএস দঃপূঃ ব্যবহৃত
জিন

গণিতের সাথে অজগর কোডের জন্য twms.googlecode.com/hg/twms/projections.py
ম্যাপেরজ

উত্তর:



4

এই কোড স্নিপেট হ'ল সি # এবং [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

আইসিএসে @ রাসেলের উত্তর অনুসরণ করা। আজ আমি তার কোডটি wgs84 (epsg: 4326) সাথে আর ডাব্লু wgs84 / সিউডো মেরেটরেটার (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
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.