J'essaye de lire un fichier binaire et d'analyser les octets que j'ai la spécification du livre blanc sur Shapefiles pour savoir comment analyser le fichier, mais je n'arrive pas à trouver les bonnes fonctions dans ColdFusion pour gérer la lecture octets et décider quoi faire avec eux.Lire un fichier Shapefile avec ColdFusion
<cffile action="READBINARY"
file="mypath/www/_Dev/tl_2009_25_place.shp"
variable="infile" >
fichier PDF avec spec: http://www.esri.com/library/whitepapers/pdfs/shapefile.pdf
Par exemple, j'ai la spécification:
Position Champ Valeur Type Référence
Octet 0 Code fichier 9994 Entier Big
Octet 4 Non utilisé 0 Entier Grand
Octet 8 Non utilisé 0 Entier Grand
Octet 12 Non utilisé 0 Entier Grand
octet 16 Non utilisé 0 Entier Big
octet 20 Non utilisé 0 Entier Big
octet 24 fichier Longueur Longueur du fichier entier Big
octet 28 Version 1000 Entier Petit
octet 32 Type Forme Forme Type Entier Petit
octet 36 Bounding Box xmin Double Petit
octet 44 Boîte Ymin Double englobante Petit
octet 52 Boîte Xmax Double englobante Petit
octet 60 Boîte Ymax Double englobante Petit
octet 68 * Boîte Zmin Double englobante Petit
octet 76 * Boîte englobante Zmax Double Petit
octet 84 * Boîte englobante Mmin Double Petit
octet 92 * Boîte englobante Mmax Double Petit
Si cela était juste un fichier texte je voudrais utiliser la fonction mi lire mon positions. Cela peut-il être fait dans ColdFusion et quelles fonctions peuvent atteindre mon objectif?
J'ai trouvé cette fonction dans FarStream.as trouvée au http://code.google.com/p/vanrijkom-flashlibs/wiki/SHP qui est un fichier Actionscript3, mais il représente le genre de tâche que je dois faire.
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;
}
Et voici la solution finale
<cfset shapeFile = createObject("java","com.bbn.openmap.layer.shape.ShapeFile").init('/www/_Dev/tl_2009_25_place.shp')>
<cfdump var="#shapeFile.getFileLength()#">
avez-vous vérifié http://openmap.bbn.com/doc/api/com/bbn/openmap/layer/shape/ShapeFile.html? – Henry
Cela semble bon, auriez-vous une idée de comment l'utiliser dans ColdFusion? – cfEngineers