geotools学习1--org.geotools.demo例子FirstProject

/* * GeoTools - The Open Source Java GIS Tookit * http://geotools.org * * (C) 2006-2008, Open Source Geospatial Foundation (OSGeo) * * This file is hereby placed into the Public Domain. This means anyone is * free to do whatever they wish with this file. Use it well and enjoy! * *--程序分析说明 *2009年7月12日 * * * * */ package org.geotools.demo; /* * 常用java包的引入 */ import java.io.File; import java.io.FileNotFoundException; import java.io.Serializable; import java.util.HashMap; import java.util.Map; /* * GUI界面包的引入 */ import javax.swing.JFileChooser; import javax.swing.filechooser.FileFilter; /* * geotools 包的引入 */ import org.geotools.data.DataStore; import org.geotools.data.DataStoreFinder; import org.geotools.data.FeatureSource; import org.geotools.factory.GeoTools; import org.geotools.feature.FeatureCollection; import org.geotools.feature.FeatureIterator; /*8 * geoApi包的引入 * GeoAPI为OpenGIS规范提供一组Java接口 */ import org.opengis.feature.simple.SimpleFeature; import org.opengis.feature.simple.SimpleFeatureType; /* * jts 包的引入 */ import com.vividsolutions.jts.geom.Geometry; /** * The example code for the "FirstProject" in the GeoTools wiki. *

* This code matches these examples: *

* * @author Jody Garnett */ public class FirstProject { public static void main(String[] args) throws Exception { /* * 输入程序版本 */ System.out.println("Welcome to GeoTools:" + GeoTools.getVersion()); /* * 打开输入对话框 */ File file = promptShapeFile(args); try { // Connection parameters /* * 获取连接参数 * */ Map connectParameters = new HashMap(); connectParameters.put("url", file.toURI().toURL()); connectParameters.put("create spatial index", true); /* * 创建DataStore * DataStore为接口 */ DataStore dataStore = DataStoreFinder.getDataStore(connectParameters); // we are now connected String[] typeNames = dataStore.getTypeNames(); String typeName = typeNames[0]; System.out.println("Reading content " + typeName); /* * 图形信息 * 比较复杂(需要仔细研究 ) */ FeatureSource featureSource; FeatureCollection collection; FeatureIterator iterator; featureSource = dataStore.getFeatureSource(typeName); collection = featureSource.getFeatures(); iterator = collection.features(); double totalLength = 0.0; try { while (iterator.hasNext()) { SimpleFeature feature = iterator.next(); /* * GeoMetry来自JavaTopologicalSuite */ Geometry geometry = (Geometry) feature.getDefaultGeometry(); totalLength += geometry.getLength(); } } finally { if (iterator != null) { // YOU MUST CLOSE THE ITERATOR! iterator.close(); } } System.out.println("Total Length " + totalLength); } catch (Exception ex) { ex.printStackTrace(); System.exit(1); } System.exit(0); } /** * Prompt for File if not provided on the command line. * Don't forget the quotes around your path if there are spaces! * * @throws FileNotFoundException * 打开shp文件对话框 * 获取相关参数 * 用到了两个重要的系统类 * (1)FIle类 * (2)JFileChooser类 */ private static File promptShapeFile(String[] args) throws FileNotFoundException { File file; /* * * 如果没有输入参数执行下面的代码 */ if (args.length == 0) { JFileChooser chooser = new JFileChooser();//文件对话框 chooser.setDialogTitle("Open Shapefile for Reprojection"); /* * FileFilter为抽象类 * 需要实例化两个方法 * (1)accept(); * (2)getDescription(); */ chooser.setFileFilter(new FileFilter() { public boolean accept(File f) { return f.isDirectory() || f.getPath().endsWith("shp") || f.getPath().endsWith("SHP"); } public String getDescription() { return "Shapefiles"; } }); /* *打开对话框 */ int returnVal = chooser.showOpenDialog(null); /* * 判断是够选择了yes还是NO */ if (returnVal != JFileChooser.APPROVE_OPTION) { System.exit(0); } file = chooser.getSelectedFile(); /* * 成功输出正确的文件名 */ System.out.println("You chose to open this file: " + file.getName()); } else { /* * 直接提供参数说明 * */ file = new File(args[0]); } /* * 最后验证file是否存在 * 如果不存在则显示抛出异常 */ if (!file.exists()) { throw new FileNotFoundException(file.getAbsolutePath()); } return file; } } 

 

程序运行结果:

geotools学习1--org.geotools.demo例子FirstProject_第1张图片geotools学习1--org.geotools.demo例子FirstProject_第2张图片

你可能感兴趣的:(GIS/ITS/GPS/RS)