-05 08:57 ARCGIS地统计学计算文件后缀名为.shp文件制作
ARCGIS地统计学计算文件后缀名为.shp文件制作
ARCAMP软件要进行地统计计算的文件后格式后缀名必须为.shp的文件,网上介绍的方法复杂难懂,那么制作.shp的文件怎么制作呢?
1、打开ArcMAP软件,点菜单栏“工具”下拉菜单中的“添加XY数据”,出现“添加XY数据”对话框,添加电子表格数据 “.dbf3”格式文件(参考“用ArcGIS9.3中标出地图中GPS点方法”第3点),点确定,GPS采集点出来了。
2、右单击图层栏刚才“添加XY数据”进来的文件名,出现对话框,选“数据”,出现下拉菜单,选“导出数据”,给这个图层文件命名后存为后缀名为“.shp”文件。这样,一个后缀名为.shp文件制作过程就完成了,下一步就可进行地统计学各种运算了。
以下是网上摘录的.shp文件创建方法:
一、第一种方法
如何创建shp文件<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
在ArcGIS下,地形图经过配准之后,就需要创建一些shp文件,进行矢量化的工作了。本节探讨一下shp文件的创建过程。
(1)启动ArcCatalog。
可以通过点击ArcMap工具栏上像衣柜的黄颜色的按钮;也可以通过: 开始-〉程序-〉ArcGIS-〉ArcCatalog。
(2)在ArcCatalog中的目录树中,点击要将shp存放的目录,点击右键,弹出快捷菜单-〉new-〉shp。
在Create new shapefile对话框中,输入Name,即shp文件的文件名。
Feature Type:要建立的shp的类型(点、线或者面)。
Spatial Reference:空间参考。比如我们要矢量化的是1w的地形图(如果是西安80),则点击 Edit按钮。
在空间参考属性对话框中,点击Select按钮,选择Projected Coordinate Systems->Gauss Kruger->Xian 1980。然后在xian1980目录下选择对应的投影参数。
至此shp创建了一半。
(3)在shp文件上右键,弹出快捷菜单,选择属性。在属性对话框中点击 fields,就可以创建属性字段了。
这样shp文件就创建完成了,你就可以将shp文件装在在ArcMap中就行矢量化的工作了。
二、第二种方法
根据Excel表格建立Shp文件
三峡大学土木水电学院 肖泽云
根据Excel 表格建立Shp 文件主要是通过Excel 表格中的数值信息,如用于表示点坐标的x值、y值以及一些属性信息,来建立一个shp数据文件,该文件中点的几何位置即为Excel表格中指定的数值,并根据要求添加一些相关的属性信息。具体来讲,整个过程主要包括三个方面:导入Excel 数据表、新建shp 数据文件、添加数据(包括几何数据和属性数据)。下面就以根据Excel表格生成Shp点数据文件为例,来具体介绍整个过程中的各主要部分:
一、导入Excel 数据表
导入Excel 数据表主要有两种方式,一种是通过OleDb 数据源的形式打开Excel表格,还有一种就是以Application的形式通过调用Excel对象来打开表格。由于采用OleDb数据源的形式比较具有通用性,使用这种方式不仅可以打开Excel表格,还可以打开Access数据库、SQL数据库等(具体调用方式稍有差别),下面主要介绍第一种方式:首先,在全局变量中定义数据源连接对象,如下:OleDbConnection oledbcConnection;//Excel连接然后,添加一个菜单项或按钮用于打开Excel 数据表,为其Click()事件添加如下代码:
try
{
OpenFileDialog openDG = new OpenFileDialog();
openDG.Title = "打开Excel表格";
openDG.Filter = "Excel表格(*.xls)|*.xls|CSV格式
(*.csv)|*.csv|所有文件(*.*)|*.*";
openDG.ShowDialog();
string filename;
filename = openDG.FileName;
string strConn
= @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
+ filename + ";Extended Properties=Excel 8.0";
oledbcConnection = new OleDbConnection(strConn);
oledbcConnection.Open();
DataTable table = new DataTable();
table =
oledbcConnection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new
object[] { null, null, null, "TABLE" });
excelBookComboBoxEx.Items.Clear();
foreach (DataRow dr in table.Rows)
{
excelBookComboBoxEx.Items.Add((String)dr["TABLE_NAME"]);
}
excelBookComboBoxEx.Text =
excelBookComboBoxEx.Items[0].ToString();
}
catch (Exception exception)
{
MessageBox.Show(exception.Message);
}
其中,excelBookComboBoxEx 为一个ComboBox 组件,用于显示该Excel 文件中的表名称(一个Excel文件中可能包含有很多表,而且每个表的名称都不一样,且第一个数据表的名称不一定就为“Sheet1”)。为了避免由于Excel文件中不存在该表名而出现错误,利用一个ComboBox 组件将该Excel 文件中所有的表名列出来。其中变量table 中保存了该Excel 表格的所有表格信息,所以“dr["TABLE_NAME"]”即为获取该行中对应的表名。在excelBookComboBoxEx 控件中选择Excel 表格中要打开的Excel 工作表后,通过一个数据库连接命令和前面定义的数据源连接来获得工作表中的数据。添加一个按钮用于确定打开Excel中某个工作表,为其Click()事件添加如下代码:
try
{
string sheetName = excelBookComboBoxEx.Text;
string strCom = @" SELECT * FROM [" + sheetName + "]";
OleDbDataAdapter myCommand = new
OleDbDataAdapter(strCom, oledbcConnection);
DataSet myDataSet = new DataSet();
myCommand.Fill(myDataSet, "[" + sheetName + "]");
excelDataGridViewX.DataMember = "[" + sheetName + "]";
excelDataGridViewX.DataSource = myDataSet;
}
catch (Exception exception)
{
MessageBox.Show(exception.Message);
}
上述代码中,excelDataGridViewX 表示一个数据表格控件用于显示Excel表格中的数据。
二、新建shp 数据文件
由于通过Excel 表格来建立一个Shp 点数据文件,可能会涉及到新建Shp数据文件,所有在此先介绍新建Shp 数据文件的过程。新建一个Form 用于表示创建Shp 文件的界面,设置Form 的Name 属性为“CreateShpFile”,然后在该界面上添加如下图所示控件(红色字体表示该控件的称):现说明一下该窗体中主要的控件,filePathTextBox 控件用于表示文件的路径,saveFileButton控件用于表示保存路径浏览,fileNameTextBox控件用于表示新建的文件名,shpTypeComboBox用于表示新建的数据类型(如Point、Polyline、Polygon 等),创建按钮用于根据设置开始创建新Shp 文件,取消按钮用于取消创建新Shp文件。首先,在全局变量中定义三个变量,如下代码:
private AxMapControl axMapControl;
private string filePath;
private string fileName;
其中,axMapControl表示MapControl控件(主要用于将新建的数据文件添加至地图中),filePath为新建数据文件的路径,fileName 为新建数据文件的名称。更改CreateShpFile 窗体的构造函数为如下:
public CreateShpFile(AxMapControl _axMapControl)
{
axMapControl = _axMapControl;
InitializeComponent();
}
这样在定义CreateShpFile 类时就要求指定MapControl对象。为保存文件路径按钮(saveFileButton)的Click()事件添加如下代码:
private void saveFileButton_Click(object sender, EventArgs e)
{
try
{
SaveFileDialog saveDG = new SaveFileDialog();
saveDG.Title = "新建Shp文件";
saveDG.Filter = "Shp文件(*.shp)|*.shp";
saveDG.ShowDialog();
string saveFilePath = saveDG.FileName;
int i = saveFilePath.LastIndexOf(@"\");
int length = saveFilePath.Length;
filePath =
Microsoft.VisualBasic.Strings.Left(saveFilePath, i+1);
filePathTextBox.Text = filePath;
fileName =
Microsoft.VisualBasic.Strings.Right(saveFilePath, length - i - 1);
fileNameTextBox.Text = fileName;
}
catch(Exception e)
{
MessageBox.Show(e.Message);
}
}
在上述代码中,在保存的全路径名称saveFilePath 通过符号“\”来区分文件路径及文件名。当更改filePathTextBox控件及fileNameTextBox控件中的文字内容时,相应要更改全局变量filePath和fileName,所以为filePathTextBox控件及fileNameTextBox控件的TextChanged()事件添加如下代码:
private void filePathTextBox_TextChanged(object sender,
EventArgs e)
{
filePath = filePathTextBox.Text;
}
private void fileNameTextBox_TextChanged(object sender,
EventArgs e)
{
fileName = fileNameTextBox.Text;
}
创建一个新的Shp 数据文件可以通过IWorkspaceFactory 接口和IFeatureWorkspace接口来实现,如下为“创建”按钮的Click()事件添加的代码:
private void 创建_Click(object sender, EventArgs e)
{
IWorkspaceFactory pShpWksFact = new
ShapefileWorkspaceFactory();
IFeatureWorkspace pFeatWks;
pFeatWks =
(IFeatureWorkspace)pShpWksFact.OpenFromFile(filePath, 0);
const string strShapeFieldName = "Shape";
//定义属性字段
IFields pFields;
IFieldsEdit pFieldsEdit;
pFields = new FieldsClass();
pFieldsEdit = (IFieldsEdit)pFields;
IField pField = new FieldClass();
IFieldEdit pFieldEdit = new FieldClass();
pFieldEdit.Name_2 = strShapeFieldName;
pFieldEdit.Type_2 = esriFieldType.esriFieldTypeGeometry;
pField = (IField)pFieldEdit;
//定义几何属性
IGeometryDef pGeomDef = new GeometryDefClass();
IGeometryDefEdit pGeomDefEdit = new GeometryDefClass();
pGeomDefEdit = (IGeometryDefEdit)pGeomDef;
switch (shpTypeComboBox.Text)
{
case "Point":
pGeomDefEdit.GeometryType_2 =
esriGeometryType.esriGeometryPoint;
break;
case "Polyline":
pGeomDefEdit.GeometryType_2 =
esriGeometryType.esriGeometryPolyline;
break;
case "Polygon":
pGeomDefEdit.GeometryType_2 =
esriGeometryType.esriGeometryPolygon;
break;
case "MultiPoint":
pGeomDefEdit.GeometryType_2 =
esriGeometryType.esriGeometryMultipoint;
break;
case "MultiPatch":
pGeomDefEdit.GeometryType_2 =
esriGeometryType.esriGeometryMultiPatch;
break;
}
pGeomDefEdit.SpatialReference_2 = (ISpatialReference)new
UnknownCoordinateSystem();
pFieldEdit.GeometryDef_2 = pGeomDef;
pFieldsEdit.AddField(pField);
pFields = (IFields)pFieldsEdit;
IFeatureClass pFeatureClass;
pFeatureClass = pFeatWks.CreateFeatureClass(fileName,
pFields, null, null, esriFeatureType.esriFTSimple, strShapeFieldName,
"");
//添加新建的数据至Map中
axMapControl.AddShapeFile(filePath, fileName);
this.Hide();
}
具体来说,创建Shp文件的过程分为四步:第一步,建立IWorkspaceFactory和IFeatureWorkspace工作空间(根据文件路径);第二步,定义数据的属性字段,默认要为其创建一个名为“Shape”的属性字段用于表示其几何形状,该字段格式esriFieldType.esriFieldTypeGeometry;第三步,定义几何属性,在前面已经指定了Shp数据的类型(点、线、面),在此需要定义其GeometryType并指定空间参考系统,默认为UnknownCoordinateSystem;第四步,在IFeatureWorkspace工作空间中创建Shp数据文件。
-05 08:57 ARCGIS地统计学计算文件后缀名为.shp文件制作的更多相关文章
- [Java] 03 String获取文件后缀名,判断文件是否合法
package test.string; import java.util.Arrays; import java.util.List; public class GetFileType { priv ...
- 指定文件夹 指定文件后缀名 删除整个文件夹 git 冲突解决 create a new repository on the command line push an existing repository from the command line
http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/001375840038939c2 ...
- Linux下的文件及文件后缀名
Linux下的文件及文件后缀名 2013-03-14 15:34 6969人阅读 评论(0) 收藏 举报 ++++++++++++++++++++++++++++++++++++++正文+++++++ ...
- 关于Windows下的文件后缀名问题
一.背景说明 有很多的小伙伴对windows下的文件后缀名不能很好地理解作用和区别,更不用说高深的使用了,在这里给大家说一下这些文件后缀名到底有什么区别,有什么作用呢? 二.说明 简单的说来,wind ...
- js 上传文件后缀名的判断 var flag=false;应用
js 上传文件后缀名的判断 var flag=false;应用 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional// ...
- SharePoint 2013中的默认爬网文件扩展名和分析文件类型
摘要:了解默认情况下 SharePoint 2013 爬网的文件扩展名及其解析的文件类型,可以借此了解搜索可以爬的文件和支持的功能. 如果“管理文件类型”页上的列表包含文件扩展名,爬网组件将仅爬网文件 ...
- php 获取文件后缀名
$file_ext = strtolower(substr(strrchr($upload_file, '.'), 1)); strrchr:查找指定字符在字符串中的最后一次出现 string str ...
- C#文件后缀名详解
C#文件后缀名详解 .sln:解决方案文件,为解决方案资源管理器提供显示管理文件的图形接口所需的信息. .csproj:项目文件,创建应用程序所需的引用.数据连接.文件夹和文件的信息. .aspx:W ...
- PHP获取文件后缀名的三种方法
如下: <? PHP获取文件后缀名的几种方法1: function get_file_type($filename){ $type = substr($filename, strrpos($fi ...
随机推荐
- SQL查询一周内过生日的用户
SELECT birthday, )) + '-' + )) + '-' + )) AS datetime) AS Nbirthday FROM CRM_Customer WHERE birthday ...
- python 之 推导式
推导式 : 英文 comprehension 支持推导式的有列表list 字典dict 集合set 注意元组没有 推导式,如果你那样去写,他会变成一个generator生 ...
- TCP粘包
一.通信协议TCP/UDP: TCP(transport control protocol,传输控制协议)是面向连接的,面向流的,提供高可靠性服务.客户端和服务器端都要有一一成对的socket, 因此 ...
- mongoose find查询意错点
//使用mongoose查询文档所有结果时容易出现的问题 ArticleContents.getAll = function(name, callback){ var query = {}; if(n ...
- Android OpenGL ES 开发教程 从入门到精通
感谢,摘自:http://blog.csdn.net/mapdigit/article/details/7526556 Android OpenGL ES 简明开发教程 Android OpenGL ...
- CentOS7 + linux kernel 3.10.94 compile 简记
Linux kernel 一直以其开源著称,可以自己编译选择合适的模块,针对特定的系统可以有不同的编译选项 来源 此次编译的内核版本为3.10.94,从官网www.kernel.org下载而来,自己虚 ...
- rabbitMq 转自 http://gaoyangang.iteye.com/blog/1566600
rabbitMq 转自 http://gaoyangang.iteye.com/blog/1566600
- Python中*args 和**kwargs的用法
当函数的参数不确定时,可以使用*args 和**kwargs,*args 没有key值,**kwargs有key值.还是直接来代码吧,废话少说[python] def fun_var_args(far ...
- iOS NSURLSession 封装下载类
周六日鼓捣NSURLSession,效率虽然低下,最后还是有了一点点眉目.昨天和汤老师一起测试,又对它加深了一点理解.趁热打铁,先总结一下. 封装的类,对外用的方法,我写的是类方法,所以,在类方法中, ...
- Notepad++ install vi plugin
下载Notepad++,想安装vi插件. 使用Notepad++自带的插件管理器下载visimulator失败. 所以直接下载插件visimulator.dll,再导入. 下载地址: https:// ...