質問

バイナリファイルを読み、バイトを解析しようとしています。ファイルを解析する方法を知るためにシェープファイルにホワイトペーパーの仕様を持っていますが、コールドフュージョンの正しい関数を見つけて、読み取りバイトを処理し、それらをどうするかを決定することはできません。

<cffile action="READBINARY"
   file="mypath/www/_Dev/tl_2009_25_place.shp"   
   variable="infile" >

仕様を備えたPDFファイル:http://www.esri.com/library/whitepapers/pdfs/shapefile.pdf

たとえば、私は仕様を持っています:

フィールド値タイプの位置を位置付けます
BYTE 0ファイルコード9994 Integer Big
バイト4未使用0整数ビッグ
バイト8未使用0整数ビッグ
バイト12未使用0整数ビッグ
バイト16未使用0整数ビッグ
バイト20未使用0整数ビッグ
バイト24ファイル長ファイル長整数ビッグ
バイト28バージョン1000整数リトル
バイト32形状型形状型整数リトル
バイト36境界ボックスXminダブルリトル
バイト44境界ボックスyminダブルリトル
バイト52境界ボックスXmaxダブルリトル
バイト60の境界ボックスymax double Little
バイト68*境界ボックスZminダブルリトル
バイト76*境界ボックスZmaxダブルリトル
バイト84*境界ボックスmminダブルリトル
バイト92*境界ボックスmmaxダブルリトル

これが単なるフラットテキストファイルである場合、Mid関数を使用して自分のポジションを読み取ります。これはコールドフュージョンで行うことができ、どの機能が私の目標を達成できますか?

私はこの関数を遠くの内部で見つけました http://code.google.com/p/vanrijkom-flashlibs/wiki/shp これはActionScript3ファイルですが、必要なタスクの種類を表します。

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;
}

そして、これが最終的な解決策です

<cfset shapeFile = createObject("java","com.bbn.openmap.layer.shape.ShapeFile").init('/www/_Dev/tl_2009_25_place.shp')>
<cfdump var="#shapeFile.getFileLength()#"> 
役に立ちましたか?

解決

<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#">

多分このようなもの?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top