Shapefile文件Word文档下载推荐.docx

上传人:b****3 文档编号:16925078 上传时间:2022-11-27 格式:DOCX 页数:26 大小:28.80KB
下载 相关 举报
Shapefile文件Word文档下载推荐.docx_第1页
第1页 / 共26页
Shapefile文件Word文档下载推荐.docx_第2页
第2页 / 共26页
Shapefile文件Word文档下载推荐.docx_第3页
第3页 / 共26页
Shapefile文件Word文档下载推荐.docx_第4页
第4页 / 共26页
Shapefile文件Word文档下载推荐.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

Shapefile文件Word文档下载推荐.docx

《Shapefile文件Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《Shapefile文件Word文档下载推荐.docx(26页珍藏版)》请在冰豆网上搜索。

Shapefile文件Word文档下载推荐.docx

publicstaticvoidmain(String[]args){

try{

//第一步:

我们需要给出连接Shapefile文件的参数

//并且把这些参数信息组织到一个Map实例中

URLurl=newFile("

您的shapefile文件,以.shp结尾"

).toURI().toURL();

Mapparams=newHashMap();

params.put("

url"

url);

//还可以加入其他参数,这里以最简单的形式给出示例。

//第二步:

根据刚才参数的信息,打开一个连接到Shapefile文件的数据源

DataStoredataStore=DataStoreFinder.getDataStore(params);

//从dataStore中获取Shapefile类型名称。

//Shapefile文件名称和Shapefile类型名称通常是一样的。

//此处dataStore现在是基于Shapefile创建的,所以TypeName就是Shapefile文件名称。

StringtypeName=dataStore.getTypeNames()[0];

System.out.println("

:

typeNameis"

+typeName);

//第三步:

根据Shapefile类型名称,从dataStore中获取的一个对象

FeatureSourcefeatureSource=dataStore.getFeatureSource(typeName);

FeatureCollectionfeatureCollection=featureSource.getFeatures();

//该FeatureCollection类的实例中存放着0...N个的对象。

FeatureIteratorfeatures=featureCollection.features();

while(features.hasNext()){

//对Layer核心的操作都是针对的是要素的操作。

所以,这里为我们提供了要素。

Featurefeature=features.next();

//我们将Gis看成是一组基于数据的服务,而数据的基础是要素(Feature)。

//所谓要素简单的说就是一个独立的对象,在地图中可能表现为一个多边形的建筑物,

//在数据库中即一个独立的条目。

//要素具有两个必要的组成部分,几何信息和属性信息。

//我们这里每一要素(Feature)类的对象中存放着

//一个几何信息(Geometry)类的对象,和许多属性信息(attributes)。

GeometrydefaultGeometry=feature.getDefaultGeometry();

defaultGeometry:

>

"

+defaultGeometry.toString());

}

//我们也可以获得要素类型。

//何谓要素类型?

相同的几何类型、属性类型的组合成为要素类型.

//要素类型相同的要素可以被存放在一个数据源中,而一个数据源只能拥有一个要素类型。

//因此,可以用要素类型来描述一组属性相似的要素。

FeatureTypefeatureType=featureSource.getSchema();

//打印普通要素

for(inti=0;

i<

featureType.getAttributeCount();

i++){

AttributeTypeattributeType=featureType.getAttributeType(i);

if(!

(attributeTypeinstanceofGeometryAttributeType)){

System.out.print(attributeType.getType().getName()+"

"

);

//打印几何要素

AttributeTypeat=featureType.getAttributeType(i);

if(atinstanceofGeometryAttributeType){

System.out.print(at.getName()+"

//打印前10个要素信息

Iteratoriterator=featureCollection.iterator();

for(intcount=0;

iterator.hasNext();

count++){

Featurefeature=(Feature)iterator.next();

System.out.print(feature.getID()+"

feature.getNumberOfAttributes();

Objectattribute=feature.getAttribute(i);

(attributeinstanceofGeometry)){

System.out.print(attribute+"

System.out.println();

if(count==10)

break;

}finally{

featureCollection.close(iterator);

//最后打印每个Gemetry对象的WKT表示

iterator=featureCollection.iterator();

System.out.println(feature.getDefaultGeometry());

//if(count==10)break;

}catch(Exceptione){

Ops!

Somethingwentwrong

e.printStackTrace();

System.exit(0);

}

(2)Shapefile文件写入

publicstaticvoidmain(String[]args)throwsException{

//第一步:

创建基于Shapefile的数据源。

DataStoreshape=createShapeFile(”example”);

//创建FeatureCollection对象

FeatureCollectionfeatures=createFeatures(shape.getSchema(”example”));

//生成Shapefile文件

writeToShapefile(shape,features);

publicstaticDataStorecreateShapeFile(Stringname){

try{

//创建数据源仓库

FileDataStoreFactorySpifactory=newIndexedShapefileDataStoreFactory();

//创建你要创建的Shapefile文件

Filefile=newFile(”f:

/shp/”+name+“.shp”);

if(!

file.exists()){

file.createNewFile();

//我们需要给出连接Shapefile文件的参数

//并且把这些参数信息组织到一个Map实例中

//注意:

使用file.toURI().toURL()的原因是因为jdk中不赞成使用file.toURL()

Mapmap=Collections.singletonMap(”url”,file.toURI()

.toURL());

//创建一个基于以上参数信息的Shapefile数据源对象

ShapefileDataStoremyData=(ShapefileDataStore)factory

.createDataStore(map);

//标明Shapefile文件中存储的数据的类型是什么:

MultiLineString

//Shapefile可以存储以下数据:

//Point,MultiPoint,MultiLineString,MultiPolygon

FeatureTypefeatureType=DataUtilities.createType(name,

“geom:

MultiLineString”);

//也可以存储其他的数据,比如:

geom:

MultiLineString,FieldName:

java.lang.Integer

//通过’,'

将他们分开。

//创建Shapefile文件

myData.createSchema(featureType);

//标明数据源使用的什么坐标参考系统

myData.forceSchemaCRS(CRS.decode(”EPSG:

4326″));

returnmyData;

}catch(FactoryExceptionfe){

fe.printStackTrace();

}catch(IOExceptione){

e.printStackTrace();

}catch(SchemaExceptionse){

se.printStackTrace();

returnnull;

publicstaticFeatureCollectioncreateFeatures(FeatureTypefeatureType){

FeatureCollectioncollection=FeatureCollections.newCollection();

GeometryFactorygf=newGeometryFactory();

Coordinatecoord1=newCoordinate(10,10);

Coordinatecoord2=newCoordinate(100,100);

Coordinate[]coords=newCoordinate[2];

coords[0]=coord1;

coords[1]=coord2;

LineStringline=gf.createLineString(coords);

LineString[]lines=newLineString[1];

lines[0]=line;

MultiLineStringmulti=gf.createMultiLineString(lines);

collection.add(featureType.create(newObject[]{multi}));

returncollection;

}catch(IllegalAttributeExceptioniae){

iae.printStackTrace();

publicstaticvoidwriteToShapefile(DataStoredata,

FeatureCollectioncollection){

DefaultTransactiontransaction=null;

FeatureStorestore=null;

String[]featureNames=data.getTypeNames();

StringfeatureName=featureNames[0];

//创建默认的事务对象

transaction=newDefaultTransaction();

//同时标明数据源使用的要素名称,通常Shapefile文件名称和Shapefile类型名称通常是一样的。

store=(FeatureStore)data.getFeatureSource(featureName);

//关联默认事务和数据源

store.setTransaction(transaction);

//增加要素信息到数据源

store.addFeatures(collection);

//提交

mit();

//关闭

transaction.close();

//回滚

transaction.rollback();

}catch(IOExceptione1){

e1.printStackTrace();

ShapeFile格式说明

1、Shape技术描述

一个完整的ESRI的shape文件包括一个主文件,一个索引文件,和一个dBASE表文件。

主文件是一个直接存取,变记录长度文件,其中每个记录描述一个由其顶点列表组成的shape。

在索引文件中,每条记录是在主文件中对应记录距离主文件头部的偏移量。

dBASE中记录的是对应主文件中记录的属性记录,每条主文件记录对应dBASE中的一条属性记录。

几何对象和属性间的一一对应关系是基于记录编号的。

在dBASE文件中的属性记录必须和主文件中的记录保持相同的顺序。

1.1命名习惯

所有文件名都遵循8.3命名习惯。

主文件,索引文件和dBASE文件有相同的前缀。

前缀必须是由字符或数字(a-Z,0-9)开始,后跟0到7个字符(a-Z,0-9,_,)主文件的后缀是.shp,索引文件的后缀是.shx,dBASE表的后缀是.dbf。

在对文件名敏感的操作系统中,文件名中的所有字母都是小写的。

例子:

主文件:

counties.shp

索引文件:

counties.shx

dBASE表:

ounties.dbf

1.2数字类型

Shape格式文件存储整数型和双精度型数据,本文档的余下部分将涉及到以下类型:

整数:

有符号32位整数(4字节)

双精度:

有符号64位IEEE双精度浮点数(8字节)

浮点数必须是数字值。

负无穷,正无穷和无效数字(NaN)在shape文件中是不合法的。

然而,shape文件支持“没有数据”这样的概念,但是目前只用于带有measure值的情况。

所谓Measure值,是用于存储需要的附加数据,可以用来记录各种数据,例如权值、道路长度等信息。

某些小于-1038被shape文件读取程序用来表示为“没有数据”的值。

下面的第一节描述shape文件的总体结构和组织。

第二节描述shape文件支持的每种shape类型的记录内容。

2、主文件的组织

主文件(.shp)由固定长度的文件头和后面变长的记录组成。

每个变长记录是由固定长度的记录头和紧接着的变长记录内容组成。

图1是主文件的结构。

图1主文件的结构

文件头

记录头

记录内容

字节序

Shape文件中所有的内容可以被分为两种类型:

⏹与数据相关的:

●主文件记录内容

●主文件头的数据描述域(Shape类型,边界盒等)

⏹与文件管理相关的:

●文件和记录长度

●记录偏移量等

在主文件的文件头和记录内容中的描述域中的整型和双精度浮点数据是按照littleendian(PC或Intel)的字节顺序形式组织的。

组成文件的其余部分和文件管理的整数和双精度浮点数是bigendian(Sun或Motorola)字节顺序。

2.1主文件头

主文件头100字节长。

表1描述了文件头中数据的字节位置,值,类型和字节顺序。

在此表中,位置是相对于文件头的。

表1主文件头的描述

位置

字段

类型

字节顺序

Byte0

FileCode(文件代码)

9994

Integer

Big

Byte4

Unused

Byte8

Byte12

Byte16

Byte20

Byte24

FileLength(文件长度)

FileLength

Byte28

Version

1000

Little

Byte32

ShapeType

Byte36

BoundingBox

Xmin

Double

Byte44

Ymin

Byte52

Xmax

Byte60

Ymax

Byte68*

Zmin

Byte76*

Zmax

Byte84*

Mmin

Byte92*

Mmax

*是未被使用的域,值为0.0,如果没有measure值或Z轴。

文件长度的值指的是16位字的个数,即文件的字节长度除以2(包括组成文件头的50个16位字)。

在shape文件中的所有非空shape必须是同一种shape类型。

Shape类型的值如下:

Shape类型

NullShape

1

Point

3

PolyLine

5

Polygon

8

MultiPoint

11

PointZ

13

PolyLineZ

15

PolygonZ

18

MultiPointZ

21

PointM

23

PolyLineM

25

PolygonM

28

MultiPointM

31

MultiPatch

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1