偶然发现的问题。
比如写出一个4个顶点的矩形矢量,在ArcGIS中如果设置不填充,竟然只有三个边。。。但是在ENVI中是显示正常的。后来请教同事后发现,是由于不闭合的原因。
废话不多说了,直接上代码。结果已经能够正常显示。
注意看顶点坐标设置的地方。
PRO test_create_shapefile_polygon COMPILE_OPT idl2 ;启动ENVI是为了生成坐标系字符串 envi, /restore_base_save_files ENVI_BATCH_INIT
;输出路径 outFile = 'D:\testpolygon.shp'
;新建文件,设置类型为多边形 oShp=OBJ_NEW('IDLffShape', outFile, /UPDATE, ENTITY_TYPE=5)
;添加属性,字符串类型(不然在ArcGIS中打不开) oShp->ADDATTRIBUTE, 'test name', 7, 50, PRECISION=0
;新建一个Entity entNew = {IDL_SHAPE_ENTITY}
entNew.SHAPE_TYPE = 5 ;多边形
;关键的地方来了。 ;虽然是4个顶点的多边形,但是需要输入5个点坐标。 ;最后1个点坐标和第1个点坐标一样。 entNew.VERTICES = PTR_NEW([[110.0,30.0], $ [110.0,40.0],[120.0,40.0],[120.0,30.0],[110.0,30.0]]) entNew.N_VERTICES = 5 ;还要设置为5个顶点
;写入记录 oShp.PutEntity, entNew
;为此条记录添加属性 attrNew = oShp ->GETATTRIBUTES(/ATTRIBUTE_STRUCTURE) attrNew.ATTRIBUTE_0 = 'test' oShp.SetAttributes, 0, attrNew
;因为坐标经纬度,获取坐标系字符串,写入prj文件(.replace方法是IDL8.4新增的) oProj = ENVI_PROJ_CREATE(/GEOGRAPHIC) prjFile = outfile.replace('.shp','.prj') OPENW, lun, prjFile, /GET_LUN PRINTF, lun, oProj.PE_COORD_SYS_STR FREE_LUN, lun
;销毁 OBJ_DESTROY, oShp END |
