ICONV字符GB2312转换UTF8

指令:

  #iconv -f GB2312 -t UTF-8 gb1.txt >gb2.txt 

         将gb1里的编码从GB2312转化成UTF-8  并重定向到gb2.txt

  除了iconv命令,我们在linux系统下的man page的第三节还可以看到一组iconv函数。它们分别是

  iconv_t   iconv_open(const char *tocode, const char *fromcode);

  size_t    iconv(iconv_t cd,  char **inbuf,    size_t *inbytesleft,    char **outbuf,    size_t *outbytesleft);

  int        iconv_close(iconv_t cd);

  iconv_open函数用来打开一个编码转换的流,iconv函数的作用是实际进行转换,iconv_close函数的作用就是关闭这个流。实际用法参见下面的例子,下面是一个将UTF-8码转换成GBK码的例子,我们假设已经有了一个uft8编码的输入缓冲区inbuf以及这个缓冲区的长度inlen。

  iconv_t cd = iconv_open( "GBK", "UTF-8");

  char *outbuf = (char *)malloc(inlen * 4 );

  bzero( outbiuf, inlen * 4);

  char *in = inbuf;

  char *out = outbuf;

  size_t outlen = inlen *4;

  iconv(cd, &in, (size_t *)&inlen, &out,&outlen);

  outlen = strlen(outbuf);

  printf("%sn",outbuf);

  free(outbuf);

  iconv_close(cd);

  非常值得注意的地方是:iconv函数会修改参数in和参数out指针所指向的地方,也就是说,在调用iconv函数之前,我们的in和inbuf指针以及out和outbuf指针指向的是同一块内存区域,但是调用之后out指针所指向的地方就不是outbuf了,同理in指针。所以要

  char *in = inbuf;

  char *out = outbuf;

  另存一下,使用或者释放内存的时候也要使用原先的那个指针outbuf和inbuf。

 

例子:

#iconv -f gb2312 -t utf8 buy_msg.htm >buy_msg.html

将buy_msg.htm 内的字符GB2312转换为UTF8

Multi-dimensional hashes in Perl

Multi dimensional hashes in Perl
编辑删除转载2016-06-07 06:57:28
标签:linux
from: http://perlmaven.com/multi-dimensional-hashes

perl中的结构体​

#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper qw(Dumper);

 

my %grades;
$grades{"Foo Bar"}{Mathematics}   = 97;
$grades{"Foo Bar"}{Literature}    = 67;
$grades{"Peti Bar"}{Literature}   = 88;
$grades{"Peti Bar"}{Mathematics}  = 82;
$grades{"Peti Bar"}{Art}          = 99;
print Dumper \%grades;
print "----------------\n";

 

foreach my $name (sort keys %grades) {
    foreach my $subject (keys %{ $grades{$name} }) {
        print "$name, $subject: $grades{$name}{$subject}\n";
    }
}

如何将TIFF格式的DEM数据转换成ASCII格式的数据

在linux下操作如下:

安装GDAL,​使用gdal_translate,方法如下:

​gdal_translate -of AAIGrid ASTGTM_N22E103_dem.tif test.asc

其中-of为指定输出格式,gdal_translate支持多种格式互转,AAIGrid为​Arc/Info ASCII Grid数据,ASTGTM_N22E103_dem.tif为tiff格式的dem数据文件,test.asc为输出文件。

​test.asc为文本文件,可以打开查看,其中包含有5~6行的头信息,主要内容如下:

​ncols        3601   —》行数

nrows        3601 —》列数

xllcorner    102.999861111111  —》x轴起点坐标,单位°

yllcorner    21.999861111111  —》y轴起点坐标,单位°

cellsize     0.000277777778  —》采样间隔,单位°,精度大概30m

之后是按行存储的数据,每一行即是相同经度不同纬度并以空格分隔的高程数值,行与行之间​用回车分开。

[GMT]已知相对于某固定点的方位角和距离,求该点位置

如题,已知某固定点A的经纬度lo1,la1,另已知某一点B相对于A的方位角az和距离dist,求B点的经纬度。用GMT的project命令。

project -Q -G10 -Clo1/la1 -Aaz -Ldist/​10000

-Q指定结果按度输出

-G指定在该方向上的采样步长

-C指定中心点或起始点

-A方位角

-L起止长度

输出的第一行前两列即是所需结果

fortran tips

1.  先定义类型,再定义存储大小

character a

dimension a(10)​

2.  获取当前时间​

第一种方法

program when 

 integer*4 today(3), now(3) 

 call idate(today) ! today(1)=day, (2)=month, (3)=year 

 call itime(now) ! now(1)=hour, (2)=minute, (3)=second 

 write ( *, 1000 ) today(2), today(1), today(3), now 

 1000 format ( 'Date ', i2.2, '/', i2.2, '/', i4.4, '; time ', & i2.2, ':', i2.2, ':', i2.2 )

 stop 

 end​

第二种方法

program now_time

integer date_time(8)       

character*10 b(3)       

call date_and_time(b(1), b(2), b(3), date_time)       

print *,’date_time    array values:’       

print *,’year=’,date_time(1)       

print *,’month_of_year=’,date_time(2)      

 print *,’day_of_month=’,date_time(3)       

print *,’time difference in minutes=’,date_time(4)       

print *,’hour of day=’,date_time(5)       

print *,’minutes of hour=’,date_time(6)       

print *,’seconds of minute=’,date_time(7)      

 print *,’milliseconds of second=’,date_time(8)      

 print *, ’DATE=’,b(1)      

 print *, ’TIME=’,b(2)       

print *, ’ZONE=’,b(3)

end

3.   数字转字符

      program tran

      integer i

      character*3 a

      i=500

      write(a,'(i3)') i

      print *, a // ' this is a test'

      end

余纬度colatitude

https://en.wikipedia.org/wiki/Colatitude

In spherical coordinates, colatitude is the complementary angle of the latitude, i.e. the difference between 90° and the latitude,[1] where southern latitudes are denoted with a minus sign.

Examples

Latitude and colatitude sum up to 90°.

place                latitude               colatitude

north pole​        90°                           0°

equator              ​0°                           90° 

south pole        -90°                       180°