GeoTools读取png,jpg 自定义经纬度地图展示实现

1 篇文章 0 订阅
1 篇文章 0 订阅
  1. Demo基本运行环境参考GeoTools官方demo搭建https://docs.geotools.org/

  1. 参考官方文档Raster示例搭建环境

https://docs.geotools.org/stable/userguide/tutorial/raster/image.html

3.核心功能实现代码如下

package com.gmcloud.meteor.client.demo06;

import com.gmcloud.meteor.client.demo26.Demo26;
import com.gmcloud.meteor.client.util.ConvertUtil;
import com.gmcloud.meteor.client.util.StyleUtil;
import org.geotools.coverage.grid.GridCoverage2D;
import org.geotools.coverage.grid.GridCoverageFactory;
import org.geotools.coverage.grid.io.AbstractGridFormat;
import org.geotools.coverage.grid.io.GridCoverage2DReader;
import org.geotools.coverage.grid.io.GridFormatFinder;
import org.geotools.gce.geotiff.GeoTiffFormat;
import org.geotools.geometry.Envelope2D;
import org.geotools.geometry.jts.ReferencedEnvelope;
import org.geotools.map.GridCoverageLayer;
import org.geotools.map.Layer;
import org.geotools.map.MapContent;
import org.geotools.styling.Style;
import org.geotools.swing.JMapFrame;
import org.geotools.util.factory.Hints;
import org.opengis.geometry.BoundingBox;

import javax.xml.parsers.ParserConfigurationException;
import javax.xml.xpath.XPathExpressionException;
import java.io.File;
import java.io.IOException;
import java.util.Objects;

/**
 * 图片数据可视化
 *
 */
public class Demo06 {

    public static void main(String[] args) throws XPathExpressionException, IOException, ParserConfigurationException {
        MapContent map = new MapContent();
        map.setTitle("Demo06");

        // 获取图片对象
        GridCoverage2DReader reader = getGridCoverage2DReader();
        BoundingBox boundingBox = new ReferencedEnvelope(61.0000, 136.9600, 6.0400, 54.0000, ConvertUtil.defaultCrs());
        GridCoverage2D gridCoverage2D = convert2GridCoverage2D(reader, boundingBox);

        // 加载图层,加载样式

        // 创建一个灰度样式
        // Style rasterStyle = createGreyscaleStyle(1);
        // RGB 样式
        Style rasterRgbStyle = StyleUtil.createRGBStyle(reader);
        Layer layer = new GridCoverageLayer(gridCoverage2D, rasterRgbStyle, "测试06");
        map.addLayer(layer);

        // 加载显示 map
        JMapFrame.showMap(map);
    }

    /**
     * 获取 GridCoverage2DReader 对象
     *
     * @return {@link GridCoverage2DReader }
     */
    private static GridCoverage2DReader getGridCoverage2DReader() {
        String imageUrl = Objects.requireNonNull(Demo06.class.getResource("/images/wxt.png")).getPath();
        File file = new File(imageUrl);
        AbstractGridFormat format = GridFormatFinder.findFormat(file);
        Hints hints = new Hints();
        if (format instanceof GeoTiffFormat) {
            hints = new Hints(Hints.FORCE_LONGITUDE_FIRST_AXIS_ORDER, Boolean.TRUE);
        }

        return format.getReader(file, hints);
    }

    /**
     * 转换为栅格数据
     *
     * @param reader gridCoverage2DReader
     * @return {@link GridCoverage2D }
     * @throws IOException ioexception
     */
    private static GridCoverage2D convert2GridCoverage2D(GridCoverage2DReader reader, BoundingBox boundingBox) throws IOException {
        GridCoverage2D coverage = reader.read(null);
        Envelope2D envelope2D = null;
        if (coverage == null) {
            throw new RuntimeException("导入图片信息错误");
        }
        envelope2D = coverage.getEnvelope2D();
        envelope2D.setCoordinateReferenceSystem(boundingBox.getCoordinateReferenceSystem());
        envelope2D.setBounds(boundingBox);
        CharSequence str = "测试06";
        GridCoverageFactory gridCoverageFactory = new GridCoverageFactory();
        return gridCoverageFactory.create(str, coverage.getRenderedImage(), envelope2D);
    }


}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Geotools是一个基于Java的开源地理信息系统(GIS)工具包,提供了一组用于处理地理数据的功能。然而,Geotools本身并不直接支持DWG文件的读取功能。由于DWG是一种由AutoCAD开发的专有格式,它并没有完全公开的文件格式说明,这导致在开发开源工具来读取DWG文件时存在一定的挑战。 要在Geotools读取DWG文件,需要借助第三方库或工具,例如GDAL(Geospatial Data Abstraction Library)。GDAL是一个功能强大的地理数据转换库,支持多种不同的地理数据格式,包括DWG。可以使用GDAL的Java绑定来读取DWG文件,并将其转换为Geotools中的地理数据对象。 以下是可能的步骤: 1. 下载和安装GDAL库,并确保正确配置环境变量。 2. 在Java项目中添加GDAL的Java绑定依赖。 3. 在代码中使用GDAL的Java绑定来读取DWG文件,并将其转换为Geotools中的地理数据对象。可以使用GDAL提供的方法来读取和解析DWG文件中的几何图形、属性和其他信息。 4. 使用Geotools提供的功能来进一步处理、分析和展示读取的DWG数据。Geotools提供了丰富的地理数据处理和分析功能,可以对DWG数据进行空间查询、投影转换、图层合并等操作。 需要注意的是,由于DWG格式的复杂性,可能无法完全支持所有DWG文件的读取和解析。不同版本的AutoCAD可能会引入不同的DWG文件格式变化,因此可能需要根据DWG文件的具体版本和特性来进行适当的调整和修改。 总之,通过借助GDAL的Java绑定,可以在Geotools实现对DWG文件的读取和处理,从而进行各种地理数据分析和展示
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值