-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 ...
随机推荐
- Wordpress更换编辑器
这里我更换为KindEditor 1.下载插件 https://wordpress.org/plugins/kindeditor-for-wordpress/ 2.启动插件 3.在 设置 – Kind ...
- MAC下配置ZSH
Mac的Terminal出了bash还配备了zsh模式,相比于bash,zsh的界面更加简单精致,用户名直接省略,用一个小箭头代替,而且箭头的颜色还可以指示命令的对错:路径和文件名的自动补全功能也十分 ...
- for循环数据节点
1.需要实现的功能,动态填充多条银行卡信息 2.dom结构 3.数据节点 4.实现方式 //获取银行卡基本信息 CmnAjax.PostData("Handler/Users/Users.a ...
- Aptana快捷键(方便查询)
窗口类:Ctrl+ Shift +L 调出快捷键提示Ctrl+ W 关闭当前标签窗口Ctrl+ Shift + W 关闭当前标签窗口Ctrl+ F6 (或者是Aptana的Ctrl+Tab )下一个编 ...
- LightOj1418 - Trees on My Island(Pick定理)
题目链接:http://lightoj.com/volume_showproblem.php?problem=1418 题意:给你多边形中的顶点,n个点按顺时针或逆时针方向给出,然后求出多边形内部有多 ...
- 解决在.ashx文件中判断Session 总是NULL的方法
实现IHttpHandler接口的同时必须继承IRequiresSessionState接口,才能拿到session public class HttpHandler: IHttpHandler, I ...
- day02-java
day02 大纲: 变量 基本数据类型 数据类型之间的转换 1.变量:存数的,代词,指代的就是它所存的那个数 1)声明: int a; //声明一个整型的变量,名为a int b ...
- iOS: 讯飞语音的使用
一.介绍: 讯飞语音做的相当不错,容错率达到90%多,如果需要做语音方面的功能,它绝对是一个不错的选择.讯飞语音的功能很多:语音听写.语音识别.语音合成等,但我们最常用的还是语音听写.讯飞语音中包含界 ...
- (转)linux运行tomcat时JRE_HOME显示不对怎么办?
PS:以前也没出现这些问题,重装了一下系统,感觉什么都让我撞上了.Using CATALINA_BASE: /usr/share/tomcat7Using CATALINA_HOME: /us ...
- Power-BI:从5方面助力您企业的发展
商务智能让企业得以使用自己的数据来预测销量趋势.分析ROI.追踪收益.做出更明智的产品和服务决策.商务智能可从5个方面让您成为“数据之星”,为您发展企业: 1.关注企业成长.而非数据 优质的BI工具最 ...