我从同事那里拿到一些Shapefile,这是他用shapelib写出来,存在环方向不对的错误,于是我写了一个程序处理了一下,程序没有任何问题。但是处理完后,这些shapefile不能用shp2sde导入sde了,但是用ArcCatalog可以导入,真是气死我也。但是文件很多一个一个选实在太麻烦,还有一个办法就是写程序。本来可以直接写一个程序从shapefile到sde也没什么,但是我想用sde的工具来导数据。一开始以为是我对shp2sde不熟悉,但是怎么看也看不出问题来,create,init,append都不行,feature class已经创建出来,但是没有数据,处于load only I/O模式。
E:Temp
15
15001
>
shp2sde
-
o create
-
l xz,shape
-
f xz
-
a all
-
i port:
5151
-
s
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:Temp
15
15001
>
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:Temp
15
15001
>
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中然后导出来文件是对的。

















































后来我也依稀记得在处理前的确是可以导的,只是很多记录有错误不能导入而已。自家人和自家人干上了,不过ArcObjects的确容错性很强,有些数据在ArcMap中可以看,但是到了ArcPad中就会让它突然死亡,MOJava也有这样的问题,唉!
后来我用ArcToolbox中的RepairGeometry工具修复也得到同样的结果,本来还想根据shapefile specification检查一下到底哪里出问题,最后还是放弃了,太麻烦了。但是我把shapefile导入MDB中然后导出来文件是对的。