GeoTools:WKT、GeoJson、Feature、FeatureCollection相互转换常用工具

GeoTools:WKT、GeoJSON、Feature转换实用工具
本文介绍了一个名为GeoTools的工具类,它提供了WKT、GeoJSON格式之间的转换,包括Feature和FeatureCollection的处理,适用于地理数据处理和交换。

参考文章:
GeoTools:WKT、GeoJson、Feature、FeatureCollection相互转换

转换工具类

import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import org.geotools.data.DataUtilities;
import org.geotools.data.collection.ListFeatureCollection;
import org.geotools.data.simple.SimpleFeatureCollection;
import org.geotools.feature.simple.SimpleFeatureBuilder;
import org.geotools.geojson.GeoJSONUtil;
import org.geotools.geojson.feature.FeatureJSON;
import org.geotools.geojson.geom.GeometryJSON;
import com.vividsolutions.jts.geom.Geometry;
import com.vividsolutions.jts.geom.GeometryCollection;
import com.vividsolutions.jts.geom.GeometryFactory;
import com.vividsolutions.jts.io.WKTReader;
import org.opengis.feature.simple.SimpleFeature;
import org.opengis.feature.simple.SimpleFeatureType;
 
import java.io.IOException;
import java.io.Reader;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.List;
 
/**
 * <p>
 * 空间处理工具
 * </p>
 *
 **/
public class GeoTools {
   
   
 
    private static final WKTReader READER = new WKTReader();
 
    /**
     * 要素集合根节点
     */
    private static final String[] COLLECTION_TYPE = new String[]{
   
   "FeatureCollection"};
 
    /**
     * 地理要素类型
     */
    private static final String[] FEATURES_TYPE = new String[]{
   
   "Feature"};
 
    /**
     * 地理数据类型
     * 点、线、面、几何集合
     */
    private static final String[] GEO_TYPE = new String[]{
   
   "Geometry", "Point", "LineString", "Polygon", "MultiPoint", "MultiLineString", "MultiPolygon", "GeometryCollection"};
 
    /**
     * 获取 Geo 几何类型
     * @param wktStr WKT 字符串
     * @return Geo 几何类型
     */
    public static String getGeometryType(String wktStr) {
   
   
        String type = null;
        if (StrUtil.isNotEmpty(wktStr)) {
   
   
            try {
   
   
                Geometry read = READER.read(wktStr);
                type = read.getGeometryType();
            }catch (Exception e) {
   
   
                System.out.println("非规范 WKT 字符串:"+ e);
                e.printStackTrace();
            }
        }
        return type;
    }
 
    /**
     * 是规范的 WKT
     * @param wktStr WKT 字符串
     * @return 是、否
     */
    public static boolean isWkt(String wktStr) {
   
   
        
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值