我查了Shp文件文件头的构造,然后编了个程序:
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.IOException;public class SHP {
int FileCode;
int Unused;
int FileLength;
int Version;
int ShapeType;
double Xmin;
double Ymin;
double Xmax;
double Ymax;
double Zmin;
double Zmax;
double Mmin;
double Mmax;
public void road_SHP_top()throws IOException {
DataInputStream input=new DataInputStream(new FileInputStream("E:\\MapZhouPlusTest\\TMM\\22.shp"));
FileCode=input.readInt();
for(int i=0;i<5;i++){
Unused= input.readInt();//unused
}
FileLength=input.readInt();
Version=input.readInt();
ShapeType=input.readInt();
Xmin=input.readDouble();
Ymin=input.readDouble();
Xmax=input.readDouble();
Ymax=input.readDouble();
Zmin= input.readDouble();
Zmax=input.readDouble();
Mmin= input.readDouble();
Mmax= input.readDouble();
System.out.println(FileCode+" ");
System.out.println(FileLength+" ");
System.out.println(Version+" ");
System.out.println(ShapeType+" ");
System.out.println(Xmin+" ");
System.out.println(Ymin+" ");
System.out.println(Xmax+" ");
System.out.println(Ymax+" ");
System.out.println(Zmin+" ");
System.out.println(Zmax+" ");
System.out.println(Mmin+" ");
System.out.println(Mmax+" ");
}
}
结果输出:
9994
158
-402456576
83886080
6.749104873219668E187
-2.3063887677012107E-207
3.105922645969358E231
3.559434626267299E-293
0.0
0.0
0.0
0.0
为什么第四行输出的是83886080?应该是1,3,5...的数,怎么会是这么大的数呢?
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.IOException;public class SHP {
int FileCode;
int Unused;
int FileLength;
int Version;
int ShapeType;
double Xmin;
double Ymin;
double Xmax;
double Ymax;
double Zmin;
double Zmax;
double Mmin;
double Mmax;
public void road_SHP_top()throws IOException {
DataInputStream input=new DataInputStream(new FileInputStream("E:\\MapZhouPlusTest\\TMM\\22.shp"));
FileCode=input.readInt();
for(int i=0;i<5;i++){
Unused= input.readInt();//unused
}
FileLength=input.readInt();
Version=input.readInt();
ShapeType=input.readInt();
Xmin=input.readDouble();
Ymin=input.readDouble();
Xmax=input.readDouble();
Ymax=input.readDouble();
Zmin= input.readDouble();
Zmax=input.readDouble();
Mmin= input.readDouble();
Mmax= input.readDouble();
System.out.println(FileCode+" ");
System.out.println(FileLength+" ");
System.out.println(Version+" ");
System.out.println(ShapeType+" ");
System.out.println(Xmin+" ");
System.out.println(Ymin+" ");
System.out.println(Xmax+" ");
System.out.println(Ymax+" ");
System.out.println(Zmin+" ");
System.out.println(Zmax+" ");
System.out.println(Mmin+" ");
System.out.println(Mmax+" ");
}
}
结果输出:
9994
158
-402456576
83886080
6.749104873219668E187
-2.3063887677012107E-207
3.105922645969358E231
3.559434626267299E-293
0.0
0.0
0.0
0.0
为什么第四行输出的是83886080?应该是1,3,5...的数,怎么会是这么大的数呢?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货