首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用ColdFusion读取Shapefile

用ColdFusion读取Shapefile
EN

Stack Overflow用户
提问于 2010-09-15 20:03:06
回答 1查看 634关注 0票数 1

我正在尝试读取一个二进制文件并解析我在Shapefiles上有白皮书规范的字节,以了解如何解析该文件,但是我似乎无法在ColdFusion中找到正确的函数来处理读取字节并决定如何处理它们。

代码语言:javascript
复制
<cffile action="READBINARY"
   file="mypath/www/_Dev/tl_2009_25_place.shp"   
   variable="infile" >

带规范的PDF文件:http://www.esri.com/library/whitepapers/pdfs/shapefile.pdf

例如,我有规范:

位置域值型阶

字节0文件代码9994整数大

字节4未使用的0整数大

字节8未使用0整数大

字节12未使用0整数大

字节16未使用0整数大

字节20未使用0整数大

字节24文件长度文件长度整数大

字节28版本1000整数小

字节32形状型形状类型整数小

字节36界盒Xmin双小

字节44边框Ymin双小

字节52包围盒Xmax双小

字节60边框Ymax双小

字节68*边框Zmin双小

字节76*边框Zmax双小

字节84*边框Mmin双小

字节92*边框Mmax双小

如果这只是一个平面文本文件,我会使用mid函数来读取我的位置。这能在ColdFusion中完成吗?哪些功能可以实现我的目标?

我在FarStream.as的http://code.google.com/p/vanrijkom-flashlibs/wiki/SHP中找到了这个函数,它是一个Actionscript3文件,但它代表了我需要完成的任务。

代码语言:javascript
复制
private function readHeader(e: ProgressEvent): void {
    // check header:
    if  (!  (   readByte()==0x46
            &&  readByte()==0x41
            &&  readByte()==0x52
            ))  
    {
        dispatchEvent(new IOErrorEvent
            ( IOErrorEvent.IO_ERROR
            , false,false
            , "File is not FAR formatted")
        );
        close();
        return;
    }
    // version:
    vMajor = readByte();
    vMinor = readByte();
    if (vMajor>VMAJOR) {
        dispatchEvent(new IOErrorEvent
            ( IOErrorEvent.IO_ERROR
            , false,false
            , "Unsupported archive version  (v."+vMajor+"."+vMinor+")")                 
        );
        close();
        return;
    }                   
    // table size:
    tableSize = readUnsignedInt();      
    // done processing header:          
    gotHeader= true;
}

这是最后的解决方案

代码语言:javascript
复制
<cfset shapeFile = createObject("java","com.bbn.openmap.layer.shape.ShapeFile").init('/www/_Dev/tl_2009_25_place.shp')>
<cfdump var="#shapeFile.getFileLength()#"> 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-09-15 20:49:19

代码语言:javascript
复制
<cffile action="READBINARY" file="mypath/www/_Dev/tl_2009_25_place.shp" variable="infile" >
<cfset shapeFile = createObject("java","com.bbn.openmap.layer.shape.ShapeFile").init(infile)>
<cfdump var="#shapeFile#">

也许是这样的?

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3721351

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档