【问题标题】:How can i use GeoTools/ProJ.4(Or Other api) to convert coordinate from HK80 GRID To latitude/longtitude?如何使用 GeoTools/ProJ.4(或其他 api)将坐标从 HK80 GRID 转换为纬度/经度?
【发布时间】:2012-01-28 08:29:43
【问题描述】:

如何将一组hk80网格转换为纬度/经度?

HK 1980 Grid 是 EPSG 2326,而 Lat/Long WGS84 是 EPSG 4326

或者有没有更适合这样做的

【问题讨论】:

    标签: java android map geotools proj


    【解决方案1】:

    希望下面的代码可以帮助到你。我需要使用 GeoTools 来实现您的目的。此外,您需要为 epsg 2326 插入相关的北距和东距。但是,我仍然无法解决异常问题。为了正确使用此代码,您需要下载并导入除 gt-epsg-postgresql 之外的所有 GeoTools jar。

    package org.geotools.tutorial;
    
    import java.awt.geom.Point2D;
    import java.io.File;
    
    import org.geotools.data.FileDataStore;
    import org.geotools.data.FileDataStoreFinder;
    import org.geotools.data.simple.SimpleFeatureSource;
    import org.geotools.factory.Hints;
    import org.geotools.map.FeatureLayer;
    import org.geotools.map.Layer;
    import org.geotools.map.MapContent;
    import org.geotools.referencing.CRS;
    import org.geotools.referencing.ReferencingFactoryFinder;
    import org.geotools.styling.SLD;
    import org.geotools.styling.Style;
    import org.geotools.swing.JMapFrame;
    import org.geotools.swing.data.JFileDataStoreChooser;
    import org.opengis.referencing.crs.CRSAuthorityFactory;
    import org.opengis.referencing.crs.CoordinateReferenceSystem;
    import org.opengis.referencing.operation.MathTransform;
    import org.geotools.referencing.*;
    /**
     * Prompts the user for a shapefile and displays the contents on the screen in a map frame.
     * <p>
     * This is the GeoTools Quickstart application used in documentationa and tutorials. *
     */
    public class quickstart {
    
    /**
     * GeoTools Quickstart demo application. Prompts the user for a shapefile and displays its
     * contents on the screen in a map frame
     */
        public static void main(String[] args) throws Exception {
            //Point2D.Double srcProjec = new Point2D.Double (836694.050, 819069.800);
            //Point2D.Double dstProjec = new Point2D.Double (132,37);
            // display a data store file chooser dialog for shapefiles
            //Hints hints = new Hints(Hints.FORCE_LONGITUDE_FIRST_AXIS_ORDER, Boolean.TRUE);
            //CRSAuthorityFactory factory = ReferencingFactoryFinder.getCRSAuthorityFactory("EPSG", hints);
            //CoordinateReferenceSystem crs = factory.createCoordinateReferenceSystem("EPSG:4326");
            CRSAuthorityFactory   factory = CRS.getAuthorityFactory(true);
            CoordinateReferenceSystem srcCRS = factory.createCoordinateReferenceSystem("EPSG:2326");
            CoordinateReferenceSystem dstCRS = factory.createCoordinateReferenceSystem("EPSG:4326");
            boolean lenient = true; // allow for some error due to different datums
            MathTransform transform = CRS.findMathTransform(srcCRS, dstCRS, lenient);
            double[] srcProjec = {818039, 836361};// easting, northing, 
            double[] dstProjec = {0, 0};
            transform.transform(srcProjec, 0, dstProjec, 0, 1);
            System.out.println("longitude: " + dstProjec[0] + ", latitude: " + dstProjec[1]);
    
        }
    
    }
    

    【讨论】:

    • 虽然问题半年前就发过了,谢谢你的回答。我记得我也是用geotool解决问题的(虽然我用了1个月才弄清楚geotool的存在api)
    • 我的工作完全相同,但在 Android 中。它无法编译,因为 Android 中缺少 java lib。能否告诉我坐标转换需要哪些jar文件?
    猜你喜欢
    • 2010-10-11
    • 2017-07-02
    • 2020-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-19
    相关资源
    最近更新 更多