js+html空间数据编码问题--以姓名为例(代码设涉及文件读取,文本数字提取,特别是文本x,y坐标的提取)
2017-10-24 10:51
1196 查看
格式问题
• ESRI ArcInfo Generate文件格式
• 点数据格式 <ID>, <X,Y> , {Angle},{Scale} END
• 线数据格式 <ID> <X,Y>
END
END
以某一个字为例:
L1
8,6.5
8.5,7
9,8
end
L2
10.5,6.5
9.5,8.5
end
L3
7.5,8.5
9.5,8.5
11.5,8.5
end
L4
7,10.5
9.5,10.5
11.5,10.5
end
L5
9.5,8.5
9.5,10.5
9.5,11.5
9,12.5
7.5,14
end
L6
9.5,11.5
10.5,12.5
11.5,13.5
end
L7
12.5,7
12.5,14.5
end
L8
12.5,7
15,7
13,10
14.5,11
15,12
14.5,12.5
14,13
13,12.5
end
代码描述:
结果:
源码:
<html>
<head>
<ti
4000
tle>名称编码</title>
</head>
<body>
<input id="fileInput" type="file" onchange="processFiles()"/>
<br>
<canvas id="myCanvas" width="1000" height="600" style="border:1px solid #c3c3c3">your browser does not support the canvas tag </canvas>
<script>
function processFiles(){
var file=document.getElementById("fileInput").files[0];
var reader=new FileReader();
reader.readAsText(file);
reader.onload=function(e)
{
var str = this.result;//读取文本
var number = new Array();
number= digitalExtraction(str,number);//提取数字并存入数组
draw(number);//画图
}
}
//提取数字,并存入数组
function digitalExtraction(str,number){
var heap= str.replace(/[^0-9.L]/ig,"A");
var numcharacter="";//存储数字字符
var number =new Array();//提取数字数组
var i=0;
var flag=0;//heap字符串当前标记
var n=0;//标识数字与字符转换位置
var character=heap[flag];//获取字符串的一个字符
// document.write(heap);
while(character!=null){
if(character=="L"){
number[i++]=-1;
flag+=2;
character=heap[flag];
}
if(character!="A"){
n=1;
numcharacter+=character;
}
else{
if(n){
number[i++]=parseFloat(numcharacter);
numcharacter="";
n=0;
}
}
character=heap[++flag];
}
return number;
}
function draw(number){
var canvas=document.getElementById('myCanvas');
var cxt=canvas.getContext('2d');
var n= number.length;
number
=-1;
var n= number.length;
var flag=0;
var x= new Array();
var y =new Array();
var j=0;
for(var i=1,j=0;i<n;i++){
if(number[i]!=-1){
x[j]=number[i]*10;
y[j]=number[++i]*10;
j++;
}else{
cxt.moveTo(x[0],y[0]);
for(var k=1;k<j;k++){
cxt.lineTo(x[k],y[k]);
}
cxt.stroke();
j=0;
}
}
}
</script>
</body>
</html>
• ESRI ArcInfo Generate文件格式
• 点数据格式 <ID>, <X,Y> , {Angle},{Scale} END
• 线数据格式 <ID> <X,Y>
END
END
以某一个字为例:
L1
8,6.5
8.5,7
9,8
end
L2
10.5,6.5
9.5,8.5
end
L3
7.5,8.5
9.5,8.5
11.5,8.5
end
L4
7,10.5
9.5,10.5
11.5,10.5
end
L5
9.5,8.5
9.5,10.5
9.5,11.5
9,12.5
7.5,14
end
L6
9.5,11.5
10.5,12.5
11.5,13.5
end
L7
12.5,7
12.5,14.5
end
L8
12.5,7
15,7
13,10
14.5,11
15,12
14.5,12.5
14,13
13,12.5
end
代码描述:
要求: 1、绘制16x16网格,并在其上书写实习人的姓名,字体采用等线体 2、依据网格对网格中的汉字笔画进行几何特征的编码 3、按照ArcInfo的Gen格式形成编码文件(上图) 4、编写程序读取Gen格式文件,并将结果绘制在屏幕上 |
源码:
<html>
<head>
<ti
4000
tle>名称编码</title>
</head>
<body>
<input id="fileInput" type="file" onchange="processFiles()"/>
<br>
<canvas id="myCanvas" width="1000" height="600" style="border:1px solid #c3c3c3">your browser does not support the canvas tag </canvas>
<script>
function processFiles(){
var file=document.getElementById("fileInput").files[0];
var reader=new FileReader();
reader.readAsText(file);
reader.onload=function(e)
{
var str = this.result;//读取文本
var number = new Array();
number= digitalExtraction(str,number);//提取数字并存入数组
draw(number);//画图
}
}
//提取数字,并存入数组
function digitalExtraction(str,number){
var heap= str.replace(/[^0-9.L]/ig,"A");
var numcharacter="";//存储数字字符
var number =new Array();//提取数字数组
var i=0;
var flag=0;//heap字符串当前标记
var n=0;//标识数字与字符转换位置
var character=heap[flag];//获取字符串的一个字符
// document.write(heap);
while(character!=null){
if(character=="L"){
number[i++]=-1;
flag+=2;
character=heap[flag];
}
if(character!="A"){
n=1;
numcharacter+=character;
}
else{
if(n){
number[i++]=parseFloat(numcharacter);
numcharacter="";
n=0;
}
}
character=heap[++flag];
}
return number;
}
function draw(number){
var canvas=document.getElementById('myCanvas');
var cxt=canvas.getContext('2d');
var n= number.length;
number
=-1;
var n= number.length;
var flag=0;
var x= new Array();
var y =new Array();
var j=0;
for(var i=1,j=0;i<n;i++){
if(number[i]!=-1){
x[j]=number[i]*10;
y[j]=number[++i]*10;
j++;
}else{
cxt.moveTo(x[0],y[0]);
for(var k=1;k<j;k++){
cxt.lineTo(x[k],y[k]);
}
cxt.stroke();
j=0;
}
}
}
</script>
</body>
</html>
相关文章推荐
- js空间平面坐标变换(涉及文件读取,文本提取数字,特别是x,y点,以及html下拉框设计)
- java使用gbk编码读取utf-8的js文件吃掉回车问题
- 请教Ado.Net按文本读取CSV/Txt文件时,如何禁止将内容转换成数字
- XCode数据类型转换代码 文件读取,写入,XY坐标获取,ASCII转换等
- 读取和写入文件的编码问题
- AVI编码方式及OpenCV读取AVI文件-解决opencv无法读AVI视频的问题
- [经验总结]解决Perl读取utf-8编码文件的问题
- PHP-代码-读取文本换行符的小问题解决方法
- 读取EXCEL文件数字类型字段为空的问题
- FileReader读取文件,由于不确定源文件的编码格式不同,导致读出的文件乱码的问题
- 在解决乱码问题是,如何修改文本文件的编码类型。
- 文本文件中读取中文乱码的问题
- Java 小例子:按指定的编码读取文本文件内容
- (好文!!)FileReader读取文件,由于不确定源文件的编码格式不同,导致读出的文件乱码的问题
- 不能使用文本编码“简体中文(Mac OS)”来打开文件“**.txt”问题的解决(转)
- 将Capicom调用代码封装到ActiveX——解决javascript调Capicom读取数字证书信息时,IE弹出安全提示的问题
- php文件代码采用UTF-8编码的BOM问题
- (好文!!)FileReader读取文件,由于不确定源文件的编码格式不同,导致读出的文件乱码的问题
- Linux文本文件内容编码问题
- 读取excel文件显示在gridview中数据.字符.数字混合时无法全部读取的问题!