社区
地理信息系统
帖子详情
.tab文件中被删除的记录怎么还在?
luyiping
2003-09-15 09:27:32
.tab文件中被删除的记录怎么还在?
我把某图元删了,用mapinfo打开时是灰色的空列
在加如一个图元时怎么会加到这个记录的后面呢?
明明是删掉了,为什么计算ds.RowCount的时候还是吧它加进去的呢?
...全文
81
4
打赏
收藏
.tab文件中被删除的记录怎么还在?
.tab文件中被删除的记录怎么还在? 我把某图元删了,用mapinfo打开时是灰色的空列 在加如一个图元时怎么会加到这个记录的后面呢? 明明是删掉了,为什么计算ds.RowCount的时候还是吧它加进去的呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
banner90
2003-10-09
打赏
举报
回复
第一个已经解决了,怎么还不结贴
klbt
2003-10-08
打赏
举报
回复
学习,帮你顶。
shansheng
2003-09-15
打赏
举报
回复
紧缩表,lovelyant原创
三思而行(3S2Go)论坛
vc+mapx 4.5
希望大家多多指教,此函数有一个缺点,对于有索引的图层,紧缩后,索引就没了。请教如何在程序中添加索引?
希望多多交流bodyhfp@163.com
void PackTab(CString strLayername/*需要被紧缩的层名*/)
{
COleVariant sd;
CMapXLayer layer;
CMapXDataset ds;
layer = map->GetLayers().Item(strLayername);
sd.vt = VT_DISPATCH;
sd.pdispVal = layer.m_lpDispatch;
sd.pdispVal->AddRef();
long count = map->GetDatasets().GetCount();
int flag=-1; //数据集中是否存在该层
for(int k=1;k<=count;k++)
{
if(map->GetDatasets().Item(k).GetName()==strLayername)
{
flag=1;
break;
}
}
if(flag==-1)
ds = map->GetDatasets().Add(miDataSetLayer,sd,map->GetLayers().Item(strLayername).GetName());
else
ds = map->GetDatasets().Item(strLayername);
long nreccount = ds.GetRowCount();
long nfeacount = layer.AllFeatures().GetCount();
if(nreccount!=nfeacount) /*是否需要紧缩的判断条件*/
{
CWaitCursor cursor;
// map->GetDatasets().Remove(1);
CMapXLayer layer = map->GetLayers().Item(strLayername);
long layercount = map->GetLayers().GetCount();
long layerindexOrign;
for(int k=1;k<=layercount;k++)
{
if(map->GetLayers().Item(k).GetName()==strLayername)
{
layerindexOrign = k; //该层所在的位置
break;
}
}
VARIANT vtLayer;
vtLayer.vt = VT_DISPATCH;
vtLayer.pdispVal = layer.m_lpDispatch;
vtLayer.pdispVal->AddRef();
CMapXDataset dataSet = map->GetDatasets().Item(layer.GetName());//map->GetDatasets().Add(miDataSetLayer, vtLayer,"pack";
// CString dsname = map->GetDatasets().Item(1).GetName();
CString layername = layer.GetName();
CString layerFilespec = layer.GetFilespec();
////////////////将选中的layer上的内容复制到临时建立的表templayer中(开始)/////////////////////////
CMapXLayerInfo m_LayerInfo;
m_LayerInfo.CreateDispatch(m_LayerInfo.GetClsid());
m_LayerInfo.SetType(miLayerInfoTypeNewTable);
CString tempstr;
layerFilespec.TrimLeft();
layerFilespec.TrimRight();
int pos;
pos = layerFilespec.ReverseFind('\\');
CString routeStr;
routeStr = layerFilespec.Mid(0,pos+1);
tempstr = routeStr+"\\templayer.tab";
VARIANT name;
name.vt=VT_BSTR;
name.bstrVal = tempstr.AllocSysString();
m_LayerInfo.AddParameter("filespec",name);
VARIANT vlayername;
vlayername.vt = VT_BSTR;
vlayername.bstrVal = CString("templayer".AllocSysString();
m_LayerInfo.AddParameter("Name",vlayername);
VARIANT m_Fields;
CMapXFields n_Fields;
n_Fields.CreateDispatch(n_Fields.GetClsid());
n_Fields=dataSet.GetFields();
m_Fields.vt = VT_DISPATCH;
m_Fields.pdispVal = n_Fields.m_lpDispatch;
m_Fields.pdispVal->AddRef();
m_LayerInfo.AddParameter("Fields", m_Fields);
VARIANT m_Features;
CMapXFeatures n_Features=layer.AllFeatures();
m_Features.vt = VT_DISPATCH;
m_Features.pdispVal=n_Features.m_lpDispatch;
m_Features.pdispVal->AddRef();
m_LayerInfo.AddParameter("Features", m_Features);
CMapXLayer packlyr = map->GetLayers().Add(m_LayerInfo.m_lpDispatch);
// map->GetLayers().LayersDlg(COptionalVariant(),COptionalVariant());
//packlyr为加入的临时层对象
//////////////////已将layer复制到临时建立的表templayer中///////////////////////////
map->GetDatasets().Remove(layername); //从Datasets中去除先前帮定的需紧缩的层
map->GetLayers().Remove(layername); //先把原始层(未紧缩的层)从层集中去除
//创建dataset for packlyr
vtLayer.vt = VT_DISPATCH;
vtLayer.pdispVal = packlyr.m_lpDispatch;
vtLayer.pdispVal->AddRef();
dataSet = map->GetDatasets().Add(miDataSetLayer, vtLayer,"pack";
//创建新表
CMapXLayerInfo newlayerInfo;
newlayerInfo.CreateDispatch(newlayerInfo.GetClsid());
newlayerInfo.SetType(miLayerInfoTypeNewTable);
newlayerInfo.AddParameter("filespec",COleVariant(layerFilespec));
newlayerInfo.AddParameter("Name", COleVariant(layername));
n_Fields=dataSet.GetFields();
m_Fields.vt = VT_DISPATCH;
m_Fields.pdispVal = n_Fields.m_lpDispatch;
m_Fields.pdispVal->AddRef();
newlayerInfo.AddParameter("Fields", m_Fields);
CMapXFeatures features = packlyr.AllFeatures();
VARIANT fs;
fs.vt = VT_DISPATCH;
fs.pdispVal=features.m_lpDispatch;
fs.pdispVal->AddRef();
newlayerInfo.AddParameter("features",fs);
newlayerInfo.AddParameter("OverwriteFile",COleVariant("1"; //永久写入原表
CString tempstr1,tempstr2,tempstr3,tempstr4,tempstr5;
tempstr1 = routeStr+"\\"+layername+".tab";
tempstr2 = routeStr+"\\"+layername+".dat";
tempstr3 = routeStr+"\\"+layername+".map";
tempstr4 = routeStr+"\\"+layername+".id";
tempstr5 = routeStr+"\\"+layername+".ind";
DeleteFile(tempstr1);
DeleteFile(tempstr2);
DeleteFile(tempstr3);
DeleteFile(tempstr4);
DeleteFile(tempstr5);
map->GetLayers().Add(newlayerInfo.m_lpDispatch);
map->GetLayers().Move(1,layerindexOrign+1); //把层从添加的位置移回到原来的位置
// map->GetLayers().LayersDlg(COptionalVariant(),COptionalVariant());
//删除临时表
map->GetDatasets().Remove("pack";
map->GetLayers().Remove("templayer";
tempstr1 = routeStr+"\\templayer.tab";
tempstr2 = routeStr+"\\templayer.dat";
tempstr3 = routeStr+"\\templayer.map";
tempstr4 = routeStr+"\\templayer.id";
tempstr5 = routeStr+"\\templayer.ind";
DeleteFile(tempstr1);
DeleteFile(tempstr2);
DeleteFile(tempstr3);
DeleteFile(tempstr4);
DeleteFile(tempstr5);
DataBand(strLayername);
}
}
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
刷屏,我的最爱!
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
navtech
2003-09-15
打赏
举报
回复
的确是这样的。在mapinfo里菜单的选择Table->Maintancence->Pack Table,可以紧缩表。
在MapX5.2.25里有Pack方法,MapX4.5里面就只能自己写了。
零基础快速入门:Linux系统 系统的安装、局域网与外网 的配置、下载服务的多种方式
1.linux系统介绍 以windows为内核的操作系统有哪些:win10 win8 win7 xp 系统 windows server 以linux为内核的操作系统有哪些:centos ubuntu debian windows和linux linux:服务器 安全 稳定 高效 windows:办公 家用 2.安装linux注意事项 对centos系统 的基本使用 有哪些
文件
夹 对
文件
/
文件
夹 进行操作 创建
删除
修改 移动 复制 写入 home 存放所有用户
文件
的根目录 soft :安装软件 cd ll mkdir 创建
文件
touch 空
文件
echo sdsd>a.txt vi a.txt vi c.txt 打开
文件
按下i键 改为写入的模式 写完之后保存: 先按下esc 按键再按下:w 保存 :q退出 :wq 写完之后不想保存 强制退出 esc :q!
删除
文件
/
文件
夹 rm -rf a.txt b.txt rm -rf soft 复制 如果复制
文件
cp 要复制的
文件
名 复制出来的
文件
名子 cp a.txt a1.txt 如果复制的是
文件
夹的 cp -r soft/ soft1 展示一个
文件
中
的内容 cat 移动
文件
mv temp1 temp2 重命名 mv temp1 temp2 查找: find /(查找的路径) -name *.txt b 清屏 clear
tab
按键 可以帮助我们把输入的内容补全 3.配置局域网 需要通过ssh软件远程操作linux系统 远程操作centos系统 在windows操作系统
中
通过一款软件来远程操作虚拟电脑
中
的centos系统 ssh软件: xshell secureCRT 第一步在win10系统
中
下载并且安装ssh软件 secureCRT 第二步:只要知道centos系统所在电脑的公网IP 登录账户和密码 / win10和centos系统所在的两台电脑在同一个局域网内 局域网IP 登录账户和密码 第三步:centos系统 进行局域网的设置 往网卡
中
写入一些数据 win10写入的方式:桌面的化操作和centos系统写入的方式是不一样的 ip 网关 子网掩码 NM_conteolle。。。 命令 找到往网卡写入数据的
文件
重新启动网络服务 开启22端口 重启防火墙服务 网络桥接网络 *************************端口是否开启 4.配置外网 下载软件1.下载并且安装到系统
中
node.js环境 npm install bootstrap 默认的镜像库 centos系统 yum install 服务名 默认的镜像库 2.自己下载服务 wget 服务的网络地址 自己单独安装 比较灵活 安装难度大 windows系统 exe
文件
linux rpm包
oracle
tab
被
删除
,oracle数据库被注入恶意攻击程序导致
tab
$被
删除
恢复方案
by 蔡建良 2019-2-25经过长时间摸索,参考网上各类文章。今天终于让我成功恢复了oracle的sys.
tab
$表,并成功打开了数据库。将此过程
记录
下来,与大家共享。如有疑问可联系我QQ: 304125648sys.
tab
$表的恢复要点如下:1)
Tab
$表
删除
后在行
记录
头部会标记0x7c,没
删除
前是0x6c。因此只要将找到所有
tab
$行
记录
将第一个字节改为0x6c就成功一大半的。此处建议在...
oracle数据库被注入恶意攻击程序导致
tab
$被
删除
恢复方案
by 蔡建良 2019-2-25 经过长时间摸索,参考网上各类文章。今天终于让我成功恢复了oracle的sys.
tab
$表,并成功打开了数据库。 将此过程
记录
下来,与大家共享。如有疑问可联系我QQ: 304125648 sys.
tab
$表的恢复要点如下: 1)
Tab
$表
删除
后在行
记录
头部会标记0x7c,没
删除
前是0x6c。因此只要将找到所有
tab
$行
记录
将第一个字节改为0x6c就成功一大...
.min.js
文件
介绍及使用示例
何为.min.js、.js
文件
? .js
文件
是JavaScript源码
文件
,.min.js是压缩版的js,并给出使用示例
.classpath
文件
详解
1 前言 在使用eclipse或者myeclipse进行java项目开发的时候,每个project(工程)下面都会有一个.classpath
文件
,那么这个
文件
究竟有什么作用? 2 作用 .classpath
文件
用于
记录
项目编译环境的所有信息,包括:源
文件
路径、编译后class
文件
存放路径、依赖的jar包路径、运行的容器信息、依赖的外部project等信息。如果把该
文件
删除
,则eclipse不...
地理信息系统
2,142
社区成员
8,289
社区内容
发帖
与我相关
我的任务
地理信息系统
它是一种特定的十分重要的空间信息系统。它是在计算机硬、软件系统支持下,对整个或部分地球表层(包括大气层)空间中的有关地理分布数据进行采集、储存、管理、运算、分析、显示和描述的技术系统。
复制链接
扫一扫
分享
社区描述
它是一种特定的十分重要的空间信息系统。它是在计算机硬、软件系统支持下,对整个或部分地球表层(包括大气层)空间中的有关地理分布数据进行采集、储存、管理、运算、分析、显示和描述的技术系统。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章