ArcObjects弄坏了我的Shapefile

来源:互联网 发布:php护卫神 编辑:程序博客网 时间:2024/04/28 06:02
 我从同事那里拿到一些Shapefile,这是他用shapelib写出来,存在环方向不对的错误,于是我写了一个程序处理了一下,程序没有任何问题。但是处理完后,这些shapefile不能用shp2sde导入sde了,但是用ArcCatalog可以导入,真是气死我也。但是文件很多一个一个选实在太麻烦,还有一个办法就是写程序。本来可以直接写一个程序从shapefile到sde也没什么,但是我想用sde的工具来导数据。一开始以为是我对shp2sde不熟悉,但是怎么看也看不出问题来,create,init,append都不行,feature class已经创建出来,但是没有数据,处于load only I/O模式。
E:Temp1515001>shp2sde -o create -l xz,shape -f xz -a all -i port:5151 -192.
168.7.109 -u landuse -p landuse

ArcSDE 
9.0 Oracle9i  Build 1137 Mon Jan 31 18:12:38 PST 2005
Shape to Layer Loading   Administration Utility
-----------------------------------------------------
Set X_offset   
=       36441
Set Y_offset   
=      -42900
Set XY_scale   
=      100000
Set Grid Size0 
=         274
FATAL ERROR (VRD3)
BAD IREC
我用shpinfo查看了一下文件信息如下:
E:Temp1515001>shpinfo -o describe -f xz
------------------------------------------------------------------------
Shape File:            E:/Temp
/15/15001/xz
Version:                
1000
Codepage:              EUC
Type:                  Polygon
Number of Shapes:      
146
Extent:          minX: 
36441.649238          minY: -42899.045622
                      maxX: 
48466.834859          maxY: -25411.115336
Coordinate System: PROJCS[
"Xian_1980_3_Degree_GK_CM_120E",GEOGCS["GCS_Xian_1980"
,DATUM[
"D_Xian_1980",SPHEROID["Xian_1980",6378140.0,298.257]],PRIMEM["Greenwich"
,
0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Gauss_Kruger"],PARAMETER["F
alse_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",
121.4671680],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",31.235
4465],UNIT["Meter",1.0]]

Shape Attribute Columns: 
8
Name                 Type        Width    Decimal Places
------------            ----           -----        --------------
DISTRICTID        C          
4               -
MAP_FRAME       C         
10             -
CODE                   C          
10             -
STREET_COD    C          
10            -
AREA                     N          
15            2
LAND_USE          C          
40            -
LAND_RIGHT      N           
2             -
LAND_USE_T     C          
20            -
------------------------------------------------------------------------
没有什么问题,后来我上ESRI的User Forums上去查了查,还真有人碰到和我一样的问题,他说不能用shpinfo -o stats计算shapefile的统计信息,然后也不能用shp2sde导入SDE,错误消息和我一样。我的运行结果如下:
E:Temp1515001>shpinfo -o stats -f xz
FATAL ERROR (VRD3)
BAD IREC
在论坛里找到的唯一一点有价值的信息是:
VFILE is the parallel file I/O module of ArcInfo (accessing shp/shx
as a pair). IREC is the row number parameter. In this context,
you
've got a truncated or otherwise corrupt file. If you've
transferred the shapefile 
set by FTP, it's possible you didn't use
BINARY mode. 
文件坏掉了!
后来我也依稀记得在处理前的确是可以导的,只是很多记录有错误不能导入而已。自家人和自家人干上了,不过ArcObjects的确容错性很强,有些数据在ArcMap中可以看,但是到了ArcPad中就会让它突然死亡,MOJava也有这样的问题,唉!

        后来我用ArcToolbox中的RepairGeometry工具修复也得到同样的结果,本来还想根据shapefile specification检查一下到底哪里出问题,最后还是放弃了,太麻烦了。但是我把shapefile导入MDB中然后导出来文件是对的。
原创粉丝点击