最新要闻
- 世界热消息:8成特效中国制作!《流浪地球2》豆瓣涨至8.3 超100万人评分
- 当前动态:38秒旋风榨汁 小熊无线多功能榨汁机34.9元大促
- 3000元档超香二代骁龙8旗舰!努比亚Z50 16GB+256GB狂飙版来了
- 《暗黑》平替?《火炬之光:无限》国服官宣5月公测
- 头条焦点:首个游戏版ChatGPT 网易《逆水寒》手游预计上半年推出:自研AI得分超过人类
- tcl电冰箱
- 消息!北向资金本周净卖出41.25亿元
- 环球关注:ChatGPT迅速学会下棋精髓 把人类给整不会了 网友:这谁预判得了?
- 世界快报:长城拼了!哈弗H6 DHT-PHEV限时优惠1.5万元:仅14.48万起
- 全球短讯!iPhone 15标准版上了灵动岛和USB-C接口:但跟Pro版差距还是太大
- 《狂飙》高启兰在日本火爆出圈 网友:《柯南》妃英理本理
- 灵活就业交医保太亏了怎么说?交医保太亏了具体指的是什么
- 苹果水下操控iPhone屏幕专利获批:或万元起售的Ultra机型独享
- 当前信息:魅族20电池寿命稳了:1600天连续充放容量仍大于80%
- 【新视野】日系车再受质疑!铃木维特拉遭车主集体投诉:刹车变硬踩不动
- 全球快讯:女子下班途中被狗撞伤被判工伤 法院:非本人主要责任
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
环球微动态丨不通过ArcGIS写Personal Geodatabase(esri mdb)
【资料图】
Personal Geodatabse格式为mdb,是esri公司对Access做了扩展,由于既支持空间数据,也支持关系数据,在数据交换中,应用起来比较方便。由于PGeo并不没有对外公开的接口,想要直接操作起来并非易事,网上关于CAD格式数据写到shapefile,或者shapefile写到FileGDB的方式很多,也有很多著名的工具,如GDAL、NetTopologySuite等,GDAL只支持PGeo的读取,早期版本对中文支持也不好,很多时候涉及到空间数据交换时,大家都采用shapefile文件共享。通过分析PGeo格式mdb,分析存储空间要素的关键,采用硬写的方式实现shapefile数据写入mdb中,以ArcGIS 9.3格式mdb为例:
mdb中关于空间数据的关键表有:GDB_FeatureDataset(要素集名称及空间参考)、GDB_FeatureClasses(要素类)、GDB_FieldInfo(要素的字段定义)、GDB_GeomColumns(记录各个要素类存储几何信息的字段名称、几何类型、空间参考等)、GDB_ObjectClasses(存储要素类名称及所属的要素数据集ID)、GDB_SpatialRefs(空间参考),对于已有模板的,最重要的是GDB_FeatureDataset、GDB_GeomColumns、GDB_SpatialRefs,要设置三个表的空间参考(需要对应),设置GDB_GeomColumns中的Extent、GridSize和偏移量。另外就是所写图层的表以及对应的_shape_index表(图层空间要素的对应关系表)。
写记录到图层,从datatable中获取对应的要素属性
/// /// 更新要素表数据(属性表以DataTable交换) /// /// dbf文件路径 /// mdb图层表名 /// 属性表DataTable /// 属性表唯一字段名称(供比较使用) /// dbf唯一字段名称(供比较用) /// public bool InsertFeatureClassWithProperty(string dbfPath, string tableName, DataTable propertyDataTable,string propertyKey,string dbfKey) { DbfFile odbf = new DbfFile(Encoding.UTF8); odbf.Open(dbfPath, FileMode.Open,FileAccess.Read,FileShare.ReadWrite); var orec = new DbfRecord(odbf.Header); int count = 0; for (int i = 0; i < odbf.Header.RecordCount; i++) { if (!odbf.Read(i, orec)) break; string condition = string.Format(@"{0}=""{1}""",propertyKey, orec[dbfKey]); OleDbDataAdapter adapter = mdbMgr.GetOleDbDataAdapter(tableName, condition); DataTable dataTable = new DataTable(); adapter.Fill(dataTable); if (dataTable.Rows.Count == 0) { foreach (DataRow dataRow in propertyDataTable.Rows) { if ((string)dataRow[propertyKey] == orec[dbfKey]) { DataRow row = dataTable.NewRow(); row["Shape_Length"] = orec["SHAPE_LEN"].Trim(); row["Shape_Area"] = orec["SHAPE_AREA"].Trim(); row["SHAPE"] = shpFile.shpRecords[i].bytes; for (int j = 0; j < propertyDataTable.Columns.Count; j++) row[propertyDataTable.Columns[j].ColumnName] = dataRow[j]; dataTable.Rows.Add(row); if (adapter.Update(dataTable) == 1) count++; string sqlString = string.Format("select ObjectID from {0} where {1} ", tableName,condition); OleDbCommand cmd = new OleDbCommand(sqlString, mdbMgr.mConn); int indexedObjectId = (int)cmd.ExecuteScalar(); //要素的最小外接矩形 double[] MBR = shpFile.shpRecords[i].MBR; Tuple featureExtent = new Tuple(MBR[0], MBR[1], MBR[2], MBR[3]); //改成shprecord.mbr InsertShapeIndex(tableName,indexedObjectId, featureExtent); break; } } } } odbf.Close(); return count == odbf.Header.RecordCount; }
一定要处理_shape_index表,否则arcgis打开后,属性表有记录,但无法定位和选中,那是因为空间关系不对造成的,gridsize可以设置为420,
/// /// 写要素空间关联表 /// /// /// /// public void InsertShapeIndex(string tableName, int indexedObjectId, Tuple extent) { /*按分析,四个值计算公式应该是。但上述IdxOrginX和IdxOriginY都设置成0了。 MinGX = (要素X最小值(MinX) - X方向偏移量(IdxOriginX)) / 格网尺寸(IdxGridSize); MinGY = (要素Y最小值(MinY) - Y方向偏移量(IdxOriginY)) / 格网尺寸(IdxGridSize); MaxGX = (要素X最大值(MaxX) - X方向偏移量(IdxOriginX)) / 格网尺寸(IdxGridSize); MaxGY = (要素Y最大值(MaxY) - Y方向偏移量(IdxOriginY)) / 格网尺寸(IdxGridSize); */ //extent取整问题,实际上应该都是整数, //采用math.floor返回最大的小于或等于的整数,采用math.celling返回最小大于等于的整数,两者返回类型都是double double minGX = Math.Floor(extent.Item1 / gridSize); double minGY = Math.Floor(extent.Item2 / gridSize); double maxGX = Math.Ceiling(extent.Item3 / gridSize); double maxGY = Math.Ceiling(extent.Item4 / gridSize); ; tableName += "_SHAPE_Index"; string sqlString = string.Format("insert into {0} (IndexedObjectId,MinGX,MinGY,MaxGX,MaxGY) " + "values({1},{2},{3},{4},{5})", tableName, indexedObjectId, minGX, minGY, maxGX, maxGY); OleDbCommand cmd = new OleDbCommand(sqlString, mdbMgr.mConn); cmd.ExecuteNonQuery(); }
空间参考的更新
public void UpdateGDB_GeomColumnsSRID(int srid,string tableName) { double[] MBR = shpFile.shpHeader.MBR; // 图形的最小外接矩形 Tuple layerExtent = new Tuple(MBR[0], MBR[1], MBR[2], MBR[3]); string sqlString = string.Format("update GDB_GeomColumns set SRID ="{0}",ExtentLeft={1},ExtentBottom={2},ExtentRight={3},ExtentTop={4},IdxOriginX=0,IdxOriginY=0,IdxGridSize={5} where TableName="{6}" ", srid,layerExtent.Item1, layerExtent.Item2, layerExtent.Item3, layerExtent.Item4,gridSize, tableName); OleDbCommand cmd = new OleDbCommand(sqlString, mdbMgr.mConn); cmd.ExecuteNonQuery(); }
写mdb的关键:
- 1、正确通过.shp文件获取图层的extent和每个要素的extent,该值是写GDB_GeomColumns和_Shape_Index的关键
- 2、每插入一条要素,就要写一条对应的_shape_index记录,_shape_index的值要根据格网大小和偏移量计算,且注意Min和Max取值
- 3、要素、要素集等空间参考要对应
关于shapefile文件的数据存储原理,请转https://baike.baidu.com/item/shapefile%E6%96%87%E4%BB%B6关于shapefile各文件的解析请转https://github.com/YanzheZhang/SHPReaderCSharp
-
环球微动态丨不通过ArcGIS写Personal Geodatabase(esri mdb)
PersonalGeodatabse格式为mdb,是esri公司对Access做了扩展,由于既支持空间数据,也支持关系数据,在数...
来源: -
最新消息:我们喜爱的 10 种免费 SQL Server 资源
原文:我们喜爱的10种免费SQLServer资源-SQLServer咨询-直线路径解决方案(straightpathsql com)每个人...
来源: 环球微动态丨不通过ArcGIS写Personal Geodatabase(esri mdb)
最新消息:我们喜爱的 10 种免费 SQL Server 资源
世界新消息丨ChatGPT对于普通人有什么机会和影响?
世界热消息:8成特效中国制作!《流浪地球2》豆瓣涨至8.3 超100万人评分
当前动态:38秒旋风榨汁 小熊无线多功能榨汁机34.9元大促
3000元档超香二代骁龙8旗舰!努比亚Z50 16GB+256GB狂飙版来了
《暗黑》平替?《火炬之光:无限》国服官宣5月公测
头条焦点:首个游戏版ChatGPT 网易《逆水寒》手游预计上半年推出:自研AI得分超过人类
tcl电冰箱
消息!北向资金本周净卖出41.25亿元
观天下!分布式事务和Spanner分布式数据库
8000+字,就说一个字Volatile
环球关注:ChatGPT迅速学会下棋精髓 把人类给整不会了 网友:这谁预判得了?
世界快报:长城拼了!哈弗H6 DHT-PHEV限时优惠1.5万元:仅14.48万起
全球短讯!iPhone 15标准版上了灵动岛和USB-C接口:但跟Pro版差距还是太大
《狂飙》高启兰在日本火爆出圈 网友:《柯南》妃英理本理
全球今亮点!数字孪生|可视化图表之分组柱状图
世界今日讯!测试角色在项目各阶段的项目管理tips
当前速读:【JVM】JDK7后intern方法总结
世界热讯:centos7多网口配置同网段IP解决方案
焦点快播:【Vue】vue3 元素在某区域内缩放拖拽
灵活就业交医保太亏了怎么说?交医保太亏了具体指的是什么
苹果水下操控iPhone屏幕专利获批:或万元起售的Ultra机型独享
当前信息:魅族20电池寿命稳了:1600天连续充放容量仍大于80%
【新视野】日系车再受质疑!铃木维特拉遭车主集体投诉:刹车变硬踩不动
全球快讯:女子下班途中被狗撞伤被判工伤 法院:非本人主要责任
LGV 引理
【报资讯】如何实现把多个git仓库合并为一个,并保留提交记录?
AI创作享有版权吗?
世界视讯!卖的比“老头环”快!《霍格沃茨之遗》销量破1200万
今天是世界讨厌香菜日 不爱吃竟是“天注定”:跟基因有关
测试版用户终于能“反悔”了:Win11新功能允许退回正式版系统
今日报丨果然是“应试” IIHS碰撞测试难度提高:年度获奖车型数量腰斩
海绵宝宝是一种原始的什么动物?红色海绵球是干什么用的?
正者无敌三个太太的结局是什么?正者无敌演员表介绍
宫锁连城为什么下架了?宫锁连城的大结局是什么?
安全帽能代替头盔吗?安全帽颜色的级别区分
光盘怎么进行拷贝?光盘拷贝到u盘需要多少钱?
word安全模式是怎么回事?word安全模式怎么解除?
苹果怎么查询激活时间?苹果怎么传输数据到新的手机上?
闪存卡损坏是什么原因?闪存卡损坏怎样修复?
当前速看:易基因|DNA甲基化研究的测序数据挖掘思路:干货分享
速看:Centos7单机部署Etcd
Springcloud~openfeign开启hystrix基于线程池熔断的传值问题
环球热点!产品经理
【网关开发】9.Openresty 自定义流量分流策略支持灰度(金丝雀)等发布业务场景
每日热议!刘洋一杆领跑资格考试36洞 四人并列第二
天天热议:曾凭五菱宏光MINI EV火爆出圈 小米汽车营销负责人周钘离职
全球限量1962台!徕卡推出D-Lux7 “007”限量版相机:售价达16800元
全球最资讯丨《嗜血印》魅魔DLC完善更新 新增魅魔纹和性感尾巴
全球热点!抄底手慢无:南国生椰拿铁33.9元起32杯(赠冰川杯)
热推荐:不满足于对话!微软希望ChatGPT控制机器为人服务
网络时间同步设备(时钟同步)产品的功能及技术参数
每日简讯:MegEngine 使用小技巧:使用 Netron 实现模型可视化
环球今日讯!切换页签,再切换回来,v-tooltip会一直显示问题
世界即时看!小米智能工厂二期项目主体结构已封顶:年底竣工交付
全球热消息:小米汽车明年量产!雷军晒新到手礼物:F1传奇设计师自传
世界百事通!博主实探上海巴奴火锅店:土豆11元6片 换算下来45元1斤
加密劫持病毒现身苹果macOS:盗版软件成主要途径
努比亚Z50 Ultra官宣:真全面屏!
全球速递!巴克利:湖人把一切归咎于威少会让他愤怒 在快船有最佳夺冠机会
全球今亮点!《霍格沃茨之遗》温咖癫啦维欧萨
最快2025年商用!日本飞行汽车载人试飞成功:机体中国造
天天最资讯丨记Cucumber行为驱动测试的简单配置与使用方式
老人推倒摩托后去世 继承人被起诉背后:老人是惯犯 车主不能忍
【全球独家】读Java实战(第二版)笔记19_尾声
全球短讯!衡水新型冠状病毒肺炎疫情:2月24日衡水疫情最新消息今天数据统计情况通报
全球即时:搜狗输入法UOS版上架统信UOS:适配龙芯LoongArch等架构
每日短讯:干翻 nio ,王炸 io_uring 来了 !!(图解+史上最全)
全球快看:CPU推理|使用英特尔 Sapphire Rapids 加速 PyTorch Transformers
世界视点!死锁面试题
18、实体类对象比对-JSON
产品经理,项目经理,FTO
当前最新:《狂飙》取景地拍照收费摊主已搬离:没给续签合同
环球速看:索尼A7M4将发布2.0固件 或下放部分索尼A7R5功能
80%的人出错了 你的数码相机用对了吗?
全球热讯:爱奇艺奇迹一般的赚钱了!但是 就这它也好意思?
快看点丨AMD Zen4锐龙9 7945HX大放异彩!16核心打平Intel 24核心
世界今头条!长色斑的原因有哪些_脸上为什么会长色斑
热门:007 - 研究
每日信息:47.多态
第二章 物理层
day02-自己实现Mybatis底层机制-01
世界快资讯:CSS背景设置与Emmet语法
环球观焦点:AMD发布23.2.2版驱动:RX 7900显卡小打鸡血 性能提升14%
天天最新:大理州5个新能源装备制造项目投产
深圳一外卖小哥疑送餐时猝死:曾拼命跑上六楼
环球热头条丨向上捅破天 吉利银河支持低轨卫星技术:全球无盲区定位
13代酷睿i9+满血4060显卡!华硕天选4正式开售 到手价8999元
当前短讯!造车新势力 电动自行车品牌“VELOTRIC”A轮融资:获5000万元
中疾控提醒:近期水痘处于高发期 要注意做好防护!
13代酷睿+RTX 4060!七彩虹将星X16 Pro图赏
19999元起 雷蛇推出2023款灵刃15游戏本:i7+RTX 4060
股价大涨7% 阿里发布Q3财报:营收2477.6亿 利润超456亿
全球快报:第八章 从源文件到可执行文件
天天通讯!《黑豹》《蚁人》皆扑街 漫威超级英雄为何在国内失宠?
男子一脚急刹车醒来直接四肢瘫痪 医生提醒:车祸受伤后别随意拖拽
焦点快看:系列首次支持:三星Galaxy Tab S9平板终于支持IP67防水
每日热文:三星S23首销:仅重168g的骁龙8 Gen2旗舰 屏幕比小米13更小
涨价2000只是开胃菜!销售:特斯拉还要涨价