偶然发现的问题。
比如写出一个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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理