ArcGis 字段计算器表达式可以保存为一个扩展名为.cal的文件,该文件的实质是一个文本文件,编码方式为 UTF-16-LE。

官方的说明是“ArcGIS 应用程序使用 UTF-16-LE 编码读写 .cal 文件。只要输出使用 UTF-16-LE 编码编写,其他应用程序(如记事本)可用于创建或修改 .cal 文件。使用任何其他编码将导致文件无法加载到代码段中。”

在记事本编辑后保存时编码方式应选用Unicode。

在.net中读写应使用Encoding.Unicode。

例:

  string saveFilePath = Utils.PathUtil.ShowSaveFileDialog("ArcGis字段计算器表达式|*.cal|所有文件|*.*", ".cal");
if (saveFilePath != string.Empty)
{
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.Append(this.rtxtCode.Text);
stringBuilder.AppendLine();
stringBuilder.Append("__esri_field_calculator_splitter__");
stringBuilder.AppendLine();
stringBuilder.Append(this.rtxtFunctionName.Text);
System.IO.FileStream fileStream = new System.IO.FileStream(saveFilePath, FileMode.Create);
StreamWriter streamWriter = new StreamWriter(fileStream,Encoding.Unicode);
streamWriter.Write(stringBuilder);
streamWriter.Flush();
streamWriter.Close();
streamWriter.Dispose();
fileStream.Close();
}

在python下应使用“UTF-16-LE”

例:

    cal=arcpy.GetParameterAsText(3)
cal_cntent=codecs.open(cal,'r','utf-16-LE')
code=''
exp=''
line=cal_cntent.readline()
while line:
if '__esri_field_calculator_splitter__' not in line:
if line !=' ':
code+=line
else:
line=cal_cntent.readline()
break
line=cal_cntent.readline()
while line:
if line !=' ':
exp+=line
line=cal_cntent.readline()

编码方式自官方说明得之,链接附此:

https://pro.arcgis.com/zh-cn/pro-app/tool-reference/data-management/calculate-field.htm

.lxp与.cal同原理,不赘述。

ArcGis 字段计算器表达式(Field calculator expression).cal文件与标注表达式(label expression).lxp的实质及其编码方式、解析方法的更多相关文章

  1. ArcMap中属性字段计算器(Field Calculator)的使用技巧

           很多时候,我们在使用ArcGIS进行属性数据编辑时,需要批量修改某些字段值,这时候ArcGIS提供的属性字段计算器(Field Calculator)就是一把利器.下面我就Field C ...

  2. ArcMap中字段计算器(Field Calculator)将数字类型转换为字符串类型

    在Field Calculator中选择Python,使用函数str(!字段名称!)

  3. ArcGIS字段计算器分割字段中的字符串

    ArcGIS字段计算器分割字段中的字符串 实例:在一个字段中存有长宽高三个属性数据,以x分割.例如sss为字段名(字段属性为文本类型),数据格式为:100x200x300,利用字段计算器分别将三个数存 ...

  4. ArcGIS 字段计算器 Python 坑

    最近要处理个简单数据,一个字段中为文本类型,包含各种描述.要求是包含平方米的数值提取出来,变成数值,如果包含多个,则把各个值累加起来. 比如 字段值为 “非法占用100平方米” 处理后结果为 100 ...

  5. arcgis字段计算器

    arcgis字段计算器 一.VB脚本 1.取某字段前几位或者后几位 ) ) 2.合并字段,中间加符号 Dim a if [ZDDM2] ="" Then a= [ZDDM1] el ...

  6. 修改MySQL数据库中表和表中字段的编码方式的方法

    今天向MySQL数据库中的一张表添加含有中文的数据,可是老是出异常,检查程序并没有发现错误,无奈呀,后来重新检查这张表发现表的编码方式为latin1并且原想可以插入中文的字段的编码方式也是latin1 ...

  7. 解析ArcGis的字段计算器(一)——数值型数据计算,从“面积计算”开始

    先来点儿背景知识铺垫: ArcMap的字段计算器提供了两种脚本语言的支持用以计算,两种脚本语言是VBScript与Python. 多数人选择使用前者,因为它的基本函数和Excel的函数貌似一样.注意我 ...

  8. 解析ArcGis的字段计算器(三)——文本型字段计算,编号那些事儿

    实际操作中我们一般会将编号字段定义为文本型,因为编号不是序号,序号是一个递增数值,而编号往往是一个数字串代码. 本篇无说明的均使用VBScript语句1.怎么编号?最简单的编号—>直接在编号字段 ...

  9. 由ArcMap属性字段自增引出字段计算器使用Python的技巧

    1.前言       前些日子有人问我ArcMap中要让某个字段的值实现自增有什么方法?我首先想到像SQL Server中对于数值型字段可以设置自增.所以我打开ArcCatalog查看发现只提供默认值 ...

随机推荐

  1. XSS漏洞防护

    主要是添加黑名单进行拦截 public class XSSFilter implements Filter { private final Log logger = LogFactory.getLog ...

  2. nginx+tomcat负载均衡实验

    导言: 本次实验,tomcat就直接使用录原生的主页,只是简单修改主页识别主机,nginx也是直接在欢迎页上面修改的,直接实现负载均衡. 主机1:192.168.100.156 nginx+tomca ...

  3. 利用TKinter模块创建GUI窗口

    # -*- coding: utf-8 -*- from Tkinter import *     root = Tk() # 80x80代表了初始化时主窗口的大小,0,0代表了初始化时窗口所在的位置 ...

  4. 纯Delphi 原生写的 上传到七牛的功能

    上传文件到七牛, 支持分片分段上传, 适用于Delphi XE, 10等新版本 分两个函数: uploadToQiniu 和 directUploadToQiniu uploadToQiniu 这个函 ...

  5. System.Web.Mvc 4.0.0.1 和 4.0.0.0 区别

    只是一个安全补丁的问题:  http://www.microsoft.com/zh-cn/download/details.aspx?id=44533&WT.mc_id=rss_alldown ...

  6. android studio安装中出现Failed to install Intel HAXM错误的解决方法

    1.问题分析 从下面可以知道安装Intel HAXM失败,请检查haxm_silent_run.log这篇日志. (1)先了解一下什么是Intel HAXM Intel代表的是英特尔,HAXM的全程是 ...

  7. 【记录】原生js日期格式化转换方法

    情况一:将日期转换为指定的格式:比如转换成 年月日时分秒 首先我们在js中定义函数如下 Date.prototype.format = function(fmt) { var o = { " ...

  8. React 表单元素实例

    代码实例: <!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset=" ...

  9. thymeleaf onclick方法向js方法传递参数

    如下图 这个错误并不影响 请放心使用

  10. 防火墙---CentOS

    1.查看防火墙状态 firewall-cmd --state 2.停止防火墙 systemctl stop firewalld.service 3.禁止开机启动防火墙 systemctl disabl ...