-05 08:57 ARCGIS地统计学计算文件后缀名为.shp文件制作

2011-07-05 08:57

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文件制作

时间: 2024-10-12 13:24:49

-05 08:57 ARCGIS地统计学计算文件后缀名为.shp文件制作的相关文章

Linux下的文件及文件后缀名

1.使用扩展名的背景意义: 一谈到文件类型,大家就能想到Windows的文件类型,比如file.txt.file.doc.file.sys.file.mp3.file.exe等,根据文件的后缀就能判断文件的类型.但在Linux一个文件是否能被执行,和后缀名没有太大的关系,主要看文件的属性有关.但我们了解一下Linux文件的后缀名还是有必要的,特别是我们自己创建一些文件,最好还是加后缀名,这样做的目的是仅仅是为了我们的在应用时方便. 现在的Linux桌面环境和Windows一样智能化,文件的类型是

js 上传文件后缀名的判断 var flag=false;应用

js 上传文件后缀名的判断  var flag=false;应用 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> &

SharePoint 2013中的默认爬网文件扩展名和分析文件类型

摘要:了解默认情况下 SharePoint 2013 爬网的文件扩展名及其解析的文件类型,可以借此了解搜索可以爬的文件和支持的功能. 如果“管理文件类型”页上的列表包含文件扩展名,爬网组件将仅爬网文件.内容处理组件只能解析爬网文件的内容: 当它具有可解析文件格式的格式处理程序. 当使用格式处理程序解析具有文件格式和文件扩展名的文件时. 默认情况下,SharePoint 2013 满足很多文件类型的这些要求. 默认爬网文件扩展名和解析文件格式 下表显示 SharePoint 2013 具有内置格式

使用C语言获取文件后缀名的技巧

其实原来一直以为,C语言对于处理文件后缀名这种事是有点力不从心的(只能通过自己写一个小函数完成这种小需求),maybe C++可以有实现这种功能的STL或者类,但是因为本人对C++知之甚少,也就不在这里献丑了.今日上网本来想搜一段别人写好的代码片段,修改修改拿来用的,不过偶然在csdn论坛上有人提到了一个名叫_splitpath的c函数,貌似可以获取一个文件完整路径的各个部分,当然也包括后缀名了.既然有标准文件名处理函数,岂有不用之理.这里,小弟便为大家详解一下这个函数,以后有用到类似需求的时候

BAT-批量改文件后缀名

问题现象:在处理一个目录时,发现JPG文件都是以TMP文件命名的.双击打不开.要手动改一个为JPG. 问题处理: 1.新建一个TXT文件,内容写如下: ren *.tmp *.jpg 2.把TXT改为BAT文件后缀名. 3.把这个BAT文件放在要改后缀的文件同目录下面. 4.双击BAT文件就可以了.

Mime类型与文件后缀对照表及探测文件MIME的方法

说明:刚刚写了一篇<IHttpHandler的妙用(2):防盗链!我的资源只有我的用户才能下载>的文章,网址:http://blog.csdn.net/zhoufoxcn/archive/2008/01/11/2036995.aspx.估计很多朋友对不同后缀的文件对应的MIME类型不熟悉(实际上这么多我也记不住),所以将平常常见的一些文件后缀对应的MIME类型写了一个对照表,现在奉献给大家: 文件后缀 MIME 备注 *.avi video/x-msvideo 视频文件 *.aif *.aif

文件后缀名 &nbsp; 、linux 和windows 互传文件 文件后缀名

文件后缀名   .linux 和windows 互传文件 文件后缀名 在linux 下面 命令 文件 都区分大小写 大写的 LS 就识别不了 ls 这个命令 LANG=en  就显示成英文 linux 和windows 互传文件 首相只能使用远程工具 xshell  .securecrt 首先安装一个包 yum install  -y lrzsz sz + 文件名   把linux 上的文件 传到  windows上 把 linux 上的 4.txt 传到windows 上 使用rz 回车 就可

VC获取文件后缀名

VC获取文件后缀名 2011-07-28 10:30:50|  分类: Visual C++ and O |  标签: |举报 |字号大中小 订阅 1. CString GetSuffix(CString strFileName) {         return strFileName.Right(strFileName.GetLength()-strFileName.ReverseFind('.')-1); }2.PathFindExtension3.忽略大小写方法 CString::Mak

分析复制文件,在复制过程中更改文件后缀名

这是我自己的做法: 将一个目录下的所有.java文件复制到另一个目录,但是要在复制的过程中更改文件后缀名. 思路:跟上一个一样,只是动作稍稍有一些不同,直接上代码 package pack; import java.util.*; import java.io.*; class CopyRenameFile{ public static void main(String[] args)throws IOException{ File dir=new File("E:\\JAVASE\\JAVA复