WGS84 के लिए Google मानचित्र स्थिति और पीछे के लिए जावा कोड

Google मानचित्र (पिक्सेल स्थिति) में मानचित्र स्थिति में WGS84 समन्वय प्रणाली में किसी बिंदु को परिवर्तित करने के लिए कुछ नमूना कोड खोजना, ज़ूम स्तर का समर्थन भी करता है।

यदि कोड अच्छी तरह से टिप्पणी की जाती है, तो यह किसी अन्य भाषा में भी हो सकती है।

आप मुझे ओपन सोर्स जावा प्रोजेक्ट पर भी इंगित कर सकते हैं :)

कुछ संसाधन पाए गए:

OpenLayer implementation.

JOSM project

जेएच लैब्स से उत्कृष्ट जावा मानचित्र प्रोजेक्शन लाइब्रेरी । यह एक शुद्ध जावा PROJ.4 बंदरगाह है। WGS84 से मीटर तक प्रक्षेपण करता है। वहां से मीटर को टाइल पिक्सल में परिवर्तित करने के लिए यह काफी सरल है।

0
ro fr bn

6 उत्तर

GeoTools has code to transform to and from about any coordinate system you could imagine, and among them also Google Map's. It's also open source. However, it should also be pointed out that GeoTools is a large library, so if you're looking something small, quick and easy, it's likely not the way to go.

मैं अत्यधिक अनुशंसा करता हूं हालांकि यदि आप अन्य जीआईएस/समन्वय परिवर्तन आदि भी करने जा रहे हैं।

यदि आप जियोटूल या कुछ इसी तरह का उपयोग करते हैं, तो आपको यह जानने में भी रुचि हो सकती है कि Google मानचित्र समन्वय प्रणाली को ईपीएसजी 3785 कहा जाता है।

0
जोड़ा
नया यूआरएल geotools.org
जोड़ा लेखक Jan, स्रोत
/*
 * Utility functions to transform between wgs84 and Google projection coordinates
 * Derived from openmap http://openmap.bbn.com/
 */

public class MercatorTransform {
    public final static double NORTH_POLE = 90.0;
    public final static double SOUTH_POLE = -NORTH_POLE;
    public final static double DATELINE = 180.0;
    public final static double LON_RANGE = 360.0;

    final public static transient double wgs84_earthEquatorialRadiusMeters_D = 6378137.0;
    private static double latfac = wgs84_earthEquatorialRadiusMeters_D;
    private static double lonfac = wgs84_earthEquatorialRadiusMeters_D;

    final public static transient double HALF_PI_D = Math.PI/2.0d;

    /**
     * Returns Google projection coordinates from wgs84 lat,long coordinates
     */
    public static double[] forward(double lat, double lon) {

        lat = normalizeLatitude(lat);
        lon = wrapLongitude(lon);

        double latrad = Math.toRadians(lat);
        double lonrad = Math.toRadians(lon);

        double lat_m = latfac * Math.log(Math.tan(((latrad + HALF_PI_D)/2d)));
        double lon_m = lonfac * lonrad;

        double[] x = { lon_m, lat_m };
        return x;
    }

    /**
     * Returns wgs84 lat,long coordinates from Google projection coordinates
     */
    public static float[] inverse(float lon_m, float lat_m) {
        double latrad = (2d * Math.atan(Math.exp(lat_m/latfac))) - HALF_PI_D;
        double lonrad = lon_m/lonfac;

        double lat = Math.toDegrees(latrad);
        double lon = Math.toDegrees(lonrad);

        lat = normalizeLatitude(lat);
        lon = wrapLongitude(lon);
        float[] x = { (float) lat, (float) lon };

        return x;
    }

    private static double wrapLongitude(double lon) {
        if ((lon < -DATELINE) || (lon > DATELINE)) {
            lon += DATELINE;
            lon = lon % LON_RANGE;
            lon = (lon < 0) ? DATELINE + lon : -DATELINE + lon;
        }
        return lon;
    }

    private static double normalizeLatitude(double lat) {
        if (lat > NORTH_POLE) {
            lat = NORTH_POLE;
        }
        if (lat < SOUTH_POLE) {
            lat = SOUTH_POLE;
        }
        return lat;
    }

}
0
जोड़ा
मैंने फॉर्म WGS84 को ईपीएसजी 3785 में अनुवाद करने के लिए कुछ सूत्रों को देखा है और वे गोलार्द्ध और टाइमज़ोन (मेरिडियन) के लिए भी पूछते हैं?
जोड़ा लेखक Juan Diego, स्रोत
यह उदाहरण के लिए काम नहीं कर रहा है [] c = MercatorTransform.forward (558832.516608631,180065.5020185117 और zwnj; 6); रिटर्न: 7291651.346660811 2.3810769326496765E8
जोड़ा लेखक Jeryl Cook, स्रोत

Someone took the JavaScript code from Google Maps and ported it to python: gmerc.py

मैंने इसका इस्तेमाल किया है और यह बहुत अच्छा काम करता है।

0
जोड़ा

Tile utility code in Java on mapki.com (great resource for Google map developers)

0
जोड़ा
मैंने इसे वेबैक मशीन के साथ पाया: web.archive। org/वेब/20110809084551/http: //mapki.com/wiki/…
जोड़ा लेखक Arthur Dent, स्रोत

JavaSCript में फ़ंक्शन यहां दिए गए हैं ... ओपनलेयर से निकाले गए अनुसार

function toMercator (lon, lat) {
  var x = lon * 20037508.34/180;
  var y = Math.log(Math.tan((90 + lat) * Math.PI/360))/(Math.PI/180);
  y = y * 20037508.34/180;

  return [x, y];
  }

function inverseMercator (x, y) {
  var lon = (x/20037508.34) * 180;
  var lat = (y/20037508.34) * 180;

  lat = 180/Math.PI * (2 * Math.atan(Math.exp(lat * Math.PI/180)) - Math.PI/2);

  return [lon, lat];
  }

जावा में कनवर्ट करने के लिए काफी सरल

0
जोड़ा

मैंने इसे PHP पर पोर्ट किया - यहां कोड है, अगर किसी को इसकी आवश्यकता होगी:

मर्केटर के लिए:

$lon = ($lon * 20037508.34)/180;
$lat = log(tan((90 + $lat) * M_PI/360))/(M_PI/180);
$lat = $lat * 20037508.34/180;

मर्केटर से:

$lon = ($lon/20037508.34) * 180;
$lat = ($lat/20037508.34) * 180;
$lat = 180/M_PI * (2 * atan(exp($lat * M_PI/180)) - M_PI/2);
0
जोड़ा