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

📄 testgeodatabase.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.example;

import java.math.BigDecimal;
import java.util.Iterator;
import java.util.List;

import fr.ign.cogit.geoxygene.datatools.Geodatabase;
import fr.ign.cogit.geoxygene.datatools.Metadata;
import fr.ign.cogit.geoxygene.datatools.ojb.GeodatabaseOjbFactory;
import fr.ign.cogit.geoxygene.feature.FT_Feature;
import fr.ign.cogit.geoxygene.feature.FT_FeatureCollection;
import fr.ign.cogit.geoxygene.spatial.geomroot.GM_Object;


/**
 * Exemple et test d'utilisation de l'interface Geodatabase.
 * On suppose qu'il existe une classe persistante "donnees.defaut.Troncon_route".
 * (sinon changer le nom de la classe dans le code).
 * Si la classe a charger contient beaucoup d'objet, lancer le programme avec l'option '-Xmx512M'
 * (java -Xmx512M exemple.FirstExample) .
 *
 * @author Thierry Badard & Arnaud Braun
 * @version 1.1
 * 
 */


public class TestGeodatabase {

    
    // #########################################################
    // #########################################################
    /* Attribut */
    private Geodatabase db;
    private Class tronconClass;	// classe de troncons  
    private String nomClasse = "donnees.defaut.Bdc38_troncon_route"; // nom de la classe a charger  

    
    
    // #########################################################
    // #########################################################    
    /* Constructeur */
    public TestGeodatabase() {        
        
        //  iniatilsation de la Geodatabase
		db = GeodatabaseOjbFactory.newInstance();		
        
        try {
                tronconClass = Class.forName(nomClasse);
        } catch (ClassNotFoundException e) {
            System.out.println(nomClasse+" : non trouvee");  
            System.exit(0);     
        }
		        
    }


    
    // #########################################################
    // #########################################################
    /* Methode main */
    public static void main(String args[]) {
        TestGeodatabase test = new TestGeodatabase();
        test.testJDO();     
        test.testMetadata();
        test.testSpatial();
        test.testSQL();
    }


    
    // #########################################################
    // #########################################################
    /* Teste les methodes JDO (ou ODMG) */
    public void testJDO()  {
        
        // Declaration des variables
        FT_Feature feature;
        FT_FeatureCollection featList;
        Resultat result;
        GM_Object geom;
        List list;
        
        int gid = 43897;   // identifiant feature (trouver un COGITID existant par lecture de la table)
        int seuil = 100;   // distance buffer

        // ouvre une transaction
        db.begin();
        System.out.println("debut transaction");        
        
        // teste l'ouverture de la transaction
        System.out.println("transaction ouverte ? : "+db.isOpen());
        
        // charge un objet par son identifiant
        feature = (FT_Feature) db.load(tronconClass, new Integer(gid) );        
        if (feature != null)
            System.out.println("objet charge : "+feature.getClass()+" - id : "+feature.getId());

        // chargement de tous les FT_Feature d'une classe
        featList = db.loadAllFeatures(tronconClass) ;  
        System.out.println("nombre de feature charges : "+featList.size());

        // rend un objet persistent
        featList.initIterator();
        feature = featList.next();
        geom = feature.getGeom();
        System.out.println(geom);
        result = new Resultat();
        result.setGeom(geom);
        db.makePersistent(result);
        System.out.println("objet result cree - id : "+result.getId());

        // commit intermediaire
        db.checkpoint();
        System.out.println("checkpoint");
        
        // re-chargement de tous les FT_Feature d'une classe
        // ils sont en fait deja charges, donc c'est instantane !
        featList = db.loadAllFeatures(tronconClass) ;  
        System.out.println("nombre de feature charges : "+featList.size());        
        
        // chargement de tous les troncons intersectant la geometrie "geom"
        featList = db.loadAllFeatures(tronconClass, geom) ;  
        System.out.println("nombre de feature charges : "+featList.size());  
        
        // chargement de tous les troncons dans un buffer autour de "geom"
        featList = db.loadAllFeatures(tronconClass, geom, seuil) ;  
        System.out.println("nombre de feature charges : "+featList.size());          
        
        // chargement d'objets par une requete OQL simple
        String query = "select x from "+Resultat.class.getName()+" where int1 = $0";
        System.out.println(query);
        list = db.loadOQL(query, new Integer(0) );
        System.out.println("nombre d'objets trouves par la requete : "+list.size());
        
        // destruction d'un objet
        db.deletePersistent(result);
        System.out.println("objet result detruit - id : "+result.getId());        
        
        // Commite et ferme la transaction. */
        db.commit() ;
        System.out.println("fin transaction");        
        
        // teste l'ouverture de la transaction
        System.out.println("transaction ouverte ? : "+db.isOpen());   
        
    }

    
    
    // #########################################################
    // #########################################################    
    /* Teste les metadonnees */
    public void testMetadata() {
         
         // liste des metadonnees issues du mapping
         List metadataList = db.getMetadata();
         Iterator it = metadataList.iterator();
         while (it.hasNext()) {
             Metadata metadata = (Metadata) it.next();
             if (metadata.getClassName() != null) System.out.println(metadata.getClassName());
             if (metadata.getJavaClass() != null) System.out.println(metadata.getJavaClass());
             if (metadata.getTableName() != null) System.out.println(metadata.getTableName());             
             if (metadata.getGeomColumnName() != null) System.out.println(metadata.getGeomColumnName());             
             if (metadata.getIdColumnName() != null) System.out.println(metadata.getIdColumnName());
             if (metadata.getSRID() != 0) System.out.println(metadata.getSRID());             
             if (metadata.getEnvelope() != null) System.out.println(metadata.getEnvelope());
             if (metadata.getTolerance() != null) System.out.println(metadata.getTolerance(0));         
             if (metadata.getDimension() != 0) System.out.println(metadata.getDimension());     
             System.out.println("");
         }
         
         // acces direct aux metadonnees
         String tableName = db.getMetadata(tronconClass).getTableName();
         System.out.println(tableName);
         System.out.println("");
         System.out.println(db.getMetadata(tableName).getJavaClass().getName());  
         System.out.println("");
    }
    

         
    // #########################################################
    // #########################################################    
    /* Teste les fonctionnalites spatiales */                 
    public void testSpatial() {
        
        // affectation d'une emprise
        db.mbr(tronconClass);
        System.out.println("emprise ok");
        
        // calcul d'un index spatial
        db.spatialIndex(tronconClass);
        System.out.println("index spatial ok");
    }

    
    
    // #########################################################
    // #########################################################    
    /* Teste les fonctionnalites SQL */ 
    public void testSQL() {

        // execution directe d'une requete SQL
        List list = db.exeSQLQuery("SELECT COGITID FROM RESULTAT");
        Iterator it = list.iterator();
        while (it.hasNext()) {
             Object[] resultat = (Object[]) it.next();
             int featureId = ( (BigDecimal) resultat[0] ).intValue();
             //System.out.println("feature : "+featureId+" - topo : "+topoId);
        }
        System.out.println("Requete directe SQL ok");
        
		// execution d'une commande SQL
		db.exeSQL("DELETE FROM RESULTAT");
		System.out.println("delete ok");

        // nombre d'objets d'une classe
        System.out.println("nombre d'objets : "+db.countObjects(tronconClass) );
    
        // identifiant minimum
        System.out.println("min id : "+db.minId(tronconClass) );
        
        // identifiant maximum
        System.out.println("max id : "+db.maxId(tronconClass) );       
        
    }
    
}

⌨️ 快捷键说明

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