⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 geometryconvertor.java

📁 用于GIS(全球地理系统)的分析和处理的代码。
💻 JAVA
字号:
/*
 * This file is part of the GeOxygene project source files. 
 * 
 * GeOxygene aims at providing an open framework which implements OGC/ISO specifications for 
 * the development and deployment of geographic (GIS) applications. It is a open source 
 * contribution of the COGIT laboratory at the Institut G閛graphique National (the French 
 * National Mapping Agency).
 * 
 * See: http://oxygene-project.sourceforge.net 
 *  
 * Copyright (C) 2005 Institut G閛graphique National
 *
 * This library is free software; you can redistribute it and/or modify it under the terms
 * of the GNU Lesser General Public License as published by the Free Software Foundation; 
 * either version 2.1 of the License, or any later version.
 *
 * This library is distributed in the hope that it will be useful, but WITHOUT ANY 
 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 
 * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License along with 
 * this library (see file LICENSE if present); if not, write to the Free Software 
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 *  
 */

package fr.ign.cogit.geoxygene.datatools.oracle;

import java.sql.Connection;

import oracle.jdbc.driver.OracleConnection;
import oracle.sdoapi.OraSpatialManager;
import oracle.sdoapi.adapter.SDOGeometry;
import oracle.sdoapi.adapter.SDOTemplateFactory;
import oracle.sdoapi.adapter.SDOTemplateFactoryImpl;
import oracle.sdoapi.geom.Geometry;
import oracle.sdoapi.geom.GeometryFactory;
import oracle.sdoapi.sref.SRManager;
import oracle.sql.STRUCT;

import org.apache.ojb.broker.util.batch.BatchConnection;

import fr.ign.cogit.geoxygene.spatial.geomroot.GM_Object;

/**
 * Conversion dans les 2 sens entre une SDO_GEOMETRY (format sql.STRUCT) et un GM_Object
 *
 * @author Thierry Badard & Arnaud Braun
 * @version 1.1  
 */

public class GeometryConvertor  {


    /////////////////////////////////////////////////////////////////////////////////////
    public static Object Sdo2GM_Object(Object object) {
        try {
            GeometryFactory gf = OraSpatialManager.getGeometryFactory();
            SRManager srm = OraSpatialManager.getSpatialReferenceManager();
            Geometry sdoGeom = SDOGeometry.STRUCTtoGeometry((STRUCT)object,gf,srm);
            GM_Object isoGeom = IsoAndSdo.sdoapi2iso(sdoGeom);
            return isoGeom;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
    

    /////////////////////////////////////////////////////////////////////////////////////
    public static Object GM_Object2Sdo(Object object, Connection conn) {     
        try {
            GeometryFactory gf = OraSpatialManager.getGeometryFactory();
            Geometry sdoGeom = IsoAndSdo.iso2sdoapi(gf,(GM_Object)object);   
            SDOTemplateFactory sdoTF;
            if (conn instanceof BatchConnection)  {// ceci est pour OJB
                OracleConnection oConn = (OracleConnection) ((BatchConnection)conn).getDelegate();
                sdoTF = new SDOTemplateFactoryImpl(oConn);
            } else
                sdoTF = new SDOTemplateFactoryImpl((OracleConnection)conn);
            
            STRUCT str = SDOGeometry.geometryToSTRUCT(sdoGeom,sdoTF);           
            return str;
       } catch (Exception e) {
            e.printStackTrace();
            return null;
       }                       
    }
    
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -