partition-hash-int.txt00partition-hash-int.txt配置:10000=010010=1DEFAULT_NODE=1上面columns标识将要分片的表字段,alg" />

详解 mycat分片

详解 mycat分片
详解 mycat分片

MYcat 分片规则

. 枚举法:

通过在配置文件中配置可能的枚举id,自己配置分片,使用规则:

user_id

hash-int

class="org.opencloudb.route.function.PartitionByFileMap">

partition-hash-int.txt

0

0

partition-hash-int.txt 配置:

10000=0

10010=1

DEFAULT_NODE=1

上面columns 标识将要分片的表字段,algorithm 分片函数,

其中分片函数配置中,mapFile标识配置文件名称,type默认值为0,0表示Integer,非零表示String,

所有的节点配置都是从0开始,及0代表节点1

/**

* defaultNode 默认节点:小于0表示不设置默认节点,大于等于0表示设置默认节点

*

默认节点的作用:枚举分片时,如果碰到不识别的枚举值,就让它路由到默认节点

* 如果不配置默认节点(defaultNode值小于0表示不配置默认节点),碰到

* 不识别的枚举值就会报错,

* like this:can't find datanode for sharding column:column_name

val:ffffffff

*/

2.固定分片hash算法

user_id

func1

class="org.opencloudb.route.function.PartitionByLong">

2,1

256,512

配置说明:

上面columns 标识将要分片的表字段,algorithm 分片函数,

partitionCount 分片个数列表,partitionLength 分片范围列表

分区长度:默认为最大2^n=1024 ,即最大支持1024分区

约束 :

count,length两个数组的长度必须是一致的。

1024 = sum((count[i]*length[i])). count和length两个向量的点积恒等于1024

用法例子:

本例的分区策略:希望将数据水平分成3份,前两份各占25%,第三份占50%。(故本例非均匀分区)

// |<---------------------1024------------------------>|

// |<----256--->|<----256--->|<----------512---------->|

// | partition0 | partition1 | partition2 |

// | 共2份,故count[0]=2 | 共1份,故count[1]=1 |

int[] count = new int[] { 2, 1 };

int[] length = new int[] { 256, 512 };

PartitionUtil pu = new PartitionUtil(count, length);

// 下面代码演示分别以offerId字段或memberId字段根据上述分区策略拆分的分配结果

int DEFAULT_STR_HEAD_LEN = 8; // cobar默认会配置为此值

long offerId = 12345;

String memberId = "qiushuo";

// 若根据offerId分配,partNo1将等于0,即按照上述分区策略,offerId为12345时将会被分配到partition0中

int partNo1 = pu.partition(offerId);

// 若根据memberId分配,partNo2将等于2,即按照上述分区策略,memberId为qiushuo 时将会被分到partition2中

int partNo2 = pu.partition(memberId, 0, DEFAULT_STR_HEAD_LEN);

如果需要平均分配设置:

class="org.opencloudb.route.function.PartitionByLong">

2,1

256,512

3.范围约定

user_id

rang-long

class="org.opencloudb.route.function.AutoPartitionByLong">

autopartition-long.txt

# range start-end ,data node index

# K=1000,M=10000.

0-500M=0

500M-1000M=1

1000M-1500M=2

0-10000000=0

10000001-20000000=1

配置说明:

上面columns 标识将要分片的表字段,algorithm 分片函数,

rang-long 函数中mapFile代表配置文件路径

所有的节点配置都是从0开始,及0代表节点1,此配置非常简单,即预先制定可能的id范围到某个分片

4.求模法

user_id

mod-long

class="org.opencloudb.route.function.PartitionByMod">

3

配置说明:

上面columns 标识将要分片的表字段,algorithm 分片函数,

此种配置非常明确即根据id进行十进制求模预算,相比方式1,此种在批量插入时需要切换数据源,id不连续

5.日期列分区法

create_time

sharding-by-date

class="org.opencloudb.route.function.PartitionByDate">

yyyy-MM-dd

2014-01-01

10

配置说明:

上面columns 标识将要分片的表字段,algorithm 分片函数,

配置中配置了开始日期,分区天数,即默认从开始日期算起,分隔10天一个分区

Assert.assertEquals(true, 0 == partition.calculate("2014-01-01")); Assert.assertEquals(true, 0 == partition.calculate("2014-01-10")); Assert.assertEquals(true, 1 == partition.calculate("2014-01-11")); Assert.assertEquals(true, 12 == partition.calculate("2014-05-01"));

6.通配取模

user_id

sharding-by-pattern

class="org.opencloudb.route.function.PartitionByPattern">

256

2

partition-pattern.txt

partition-pattern.txt

# id partition range start-end ,data node index

###### first host configuration

1-32=0

33-64=1

65-96=2

97-128=3

######## second host configuration

129-160=4

161-192=5

193-224=6

225-256=7

0-0=7

配置说明:

上面columns 标识将要分片的表字段,algorithm 分片函数,patternValue 即求模基数,defaoultNode 默认节点,如果配置了默认,则不会按照求模运算

mapFile 配置文件路径

配置文件中,1-32 即代表id%256后分布的范围,如果在1-32则在分区1,其他类推,如果id非数据,则会分配在defaoultNode 默认节点

String idVal = "0";

Assert.assertEquals(true, 7 == autoPartition.calculate(idVal)); idVal = "45a";

Assert.assertEquals(true, 2 == autoPartition.calculate(idVal));

7. ASCII码求模通配

user_id

sharding-by-prefixpattern

class="org.opencloudb.route.function.PartitionByPattern">

256

5

partition-pattern.txt

partition-pattern.txt

# range start-end ,data node index

# ASCII

# 48-57=0-9

# 64銆?5-90=@銆丄-Z

# 97-122=a-z

###### first host configuration

1-4=0

5-8=1

9-12=2

13-16=3

###### second host configuration

17-20=4

21-24=5

25-28=6

29-32=7

0-0=7

配置说明:

上面columns 标识将要分片的表字段,algorithm 分片函数,patternValue 即求模基数,prefixLength ASCII 截取的位数

mapFile 配置文件路径

配置文件中,1-32 即代表id%256后分布的范围,如果在1-32则在分区1,其他类推

此种方式类似方式6只不过采取的是将列种获取前prefixLength位列所有ASCII码的和进行求模sum%patternValue ,获取的值,在通配范围内的

即分片数,

/**

* ASCII编码:

* 48-57=0-9阿拉伯数字

* 64、65-90=@、A-Z

* 97-122=a-z

*

*/

String idVal="gf89f9a";

Assert.assertEquals(true, 0==autoPartition.calculate(idVal));

idVal="8df99a";

Assert.assertEquals(true, 4==autoPartition.calculate(idVal));

idVal="8dhdf99a";

Assert.assertEquals(true, 3==autoPartition.calculate(idVal));

8.编程指定

user_id

sharding-by-substring

class="org.opencloudb.route.function.PartitionDirectBySubString"> 0 2

8

0

配置说明:

上面columns 标识将要分片的表字段,algorithm 分片函数

此方法为直接根据字符子串(必须是数字)计算分区号(由应用传递参数,显式指定分区号)。

例如id=05-100000002

在此配置中代表根据id中从startIndex=0,开始,截取siz=2位数字即05,05就是获取的分区,如果没传默认分配到defaultPartition

9.字符串hash解析

user_id

sharding-by-stringhash

class="org.opencloudb.route.function.PartitionDirectBySubString">

512

2

0:2

配置说明:

上面columns 标识将要分片的表字段,algorithm 分片函数

函数中length代表字符串hash求模基数,count分区数,hashSlice hash预算位

即根据子字符串hash运算

hashSlice :0 means str.length(), -1 means str.length()-1

/**

* "2" -> (0,2)

* "1:2" -> (1,2)

* "1:" -> (1,0)

* "-1:" -> (-1,0)

* ":-1" -> (0,-1)

* ":" -> (0,0)

*/

例子:

String idVal=null;

rule.setPartitionLength("512");

rule.setPartitionCount("2");

rule.init();

rule.setHashSlice("0:2");

// idVal = "0";

// Assert.assertEquals(true, 0 == rule.calculate(idVal)); // idVal = "45a";

// Assert.assertEquals(true, 1 == rule.calculate(idVal));

//last 4

rule = new PartitionByString();

rule.setPartitionLength("512");

rule.setPartitionCount("2");

rule.init();

//last 4 characters

rule.setHashSlice("-4:0");

idVal = "aaaabbb0000";

Assert.assertEquals(true, 0 == rule.calculate(idVal));

idVal = "aaaabbb2359";

Assert.assertEquals(true, 0 == rule.calculate(idVal));

10,一致性hash

user_id

murmur

class="org.opencloudb.route.function.PartitionByMurmurHash">

0

2

160

一致性hash预算有效解决了分布式数据的扩容问题,前1-9中id规则都多少存在数据扩容难题,而10规则解决了数据扩容难点

关于一致性hash详细:

一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似。一致性哈希修正了CARP使用的简单哈希算法带来的问题,使得分布式哈希(DHT)可以在P2P环境中真正得到应用。

一致性hash算法提出了在动态变化的Cache环境中,判定哈希算法好坏的四个定义:

1、平衡性(Balance):平衡性是指哈希的结果能够尽可能分布到所有的缓冲

中去,这样可以使得所有的缓冲空间都得到利用。很多哈希算法都能够满足

这一条件。

2、单调性(Monotonicity):单调性是指如果已经有一些内容通过哈希分派到

了相应的缓冲中,又有新的缓冲加入到系统中。哈希的结果应能够保证原有

已分配的内容可以被映射到原有的或者新的缓冲中去,而不会被映射到旧的

缓冲集合中的其他缓冲区。

3、分散性(Spread):在分布式环境中,终端有可能看不到所有的缓冲,而是

只能看到其中的一部分。当终端希望通过哈希过程将内容映射到缓冲上时,

由于不同终端所见的缓冲范围有可能不同,从而导致哈希的结果不一致,最

终的结果是相同的内容被不同的终端映射到不同的缓冲区中。这种情况显然

是应该避免的,因为它导致相同内容被存储到不同缓冲中去,降低了系统存

储的效率。分散性的定义就是上述情况发生的严重程度。好的哈希算法应能

够尽量避免不一致的情况发生,也就是尽量降低分散性。

4、负载(Load):负载问题实际上是从另一个角度看待分散性问题。既然不

同的终端可能将相同的内容映射到不同的缓冲区中,那么对于一个特定的缓

冲区而言,也可能被不同的用户映射为不同的内容。与分散性一样,这种

情况也是应当避免的,因此好的哈希算法应能够尽量降低缓冲的负荷。

在分布式集群中,对机器的添加删除,或者机器故障后自动脱离集群这些操作是分布式集群管理最基本的功能。如果采用常用的hash(object)%N算法,那么在有机器添加或者删除后,很多原有的数据就无法找到了,这样严重的违反了单调性原则。接下来主要讲解一下一致性哈希算法是如何设计的:

环形Hash空间

按照常用的hash算法来将对应的key哈希到一个具有2^32次方个桶的空间中,即0~(2^32)-1的数字空间中。现在我们可以将这些数字头尾相连,想象成一个闭合的环形。如下图

把数据通过一定的hash算法处理后映射到环上

现在我们将object1、object2、object3、object4四个对象通过特定的Hash函数计算出对应的key值,然后散列到Hash环上。如下图:

Hash(object1) = key1;

Hash(object2) = key2;

Hash(object3) = key3;

Hash(object4) = key4;

将机器通过hash算法映射到环上

在采用一致性哈希算法的分布式集群中将新的机器加入,其原理是通过使用与对象存储一样的Hash算法将机器也映射到环中(一般情况下对机器的hash计算是采用机器的IP或者机器唯一的别名作为输入值),然后以顺时针的方向计算,将所有对象存储到离自己最近的机器中。

假设现在有NODE1,NODE2,NODE3三台机器,通过Hash算法得到对应的KEY值,映射到环中,其示意图如下:

Hash(NODE1) = KEY1;

Hash(NODE2) = KEY2;

Hash(NODE3) = KEY3;

通过上图可以看出对象与机器处于同一哈希空间中,这样按顺时针转动object1存储到了NODE1中,object3存储到了NODE2中,object2、object4存储到了NODE3中。在这样的

部署环境中,hash环是不会变更的,因此,通过算出对象的hash值就能快速的定位到对应的机器中,这样就能找到对象真正的存储位置了。

机器的删除与添加

普通hash求余算法最为不妥的地方就是在有机器的添加或者删除之后会照成大量的对象存储位置失效,这样就大大的不满足单调性了。下面来分析一下一致性哈希算法是如何处理的。

1. 节点(机器)的删除

以上面的分布为例,如果NODE2出现故障被删除了,那么按照顺时针迁移的方法,object3将会被迁移到NODE3中,这样仅仅是object3的映射位置发生了变化,其它的对象没有任何的改动。如下图:

2. 节点(机器)的添加

如果往集群中添加一个新的节点NODE4,通过对应的哈希算法得到KEY4,并映射到环中,如下图:

通过按顺时针迁移的规则,那么object2被迁移到了NODE4中,其它对象还保持这原有的存储位置。通过对节点的添加和删除的分析,一致性哈希算法在保持了单调性的同时,还是数据的迁移达到了最小,这样的算法对分布式集群来说是非常合适的,避免了大量数据迁移,减小了服务器的的压力。

平衡性

根据上面的图解分析,一致性哈希算法满足了单调性和负载均衡的特性以及一般hash算法的分散性,但这还并不能当做其被广泛应用的原由,因为还缺少了平衡性。下面将分析一致性哈希算法是如何满足平衡性的。hash算法是不保证平衡的,如上面只部署了NODE1和NODE3的情况(NODE2被删除的图),object1存储到了NODE1中,而object2、object3、object4都存储到了NODE3中,这样就照成了非常不平衡的状态。在一致性哈希算法中,为了尽可能的满足平衡性,其引入了虚拟节点。

——“虚拟节点”(virtual node )是实际节点(机器)在hash 空间的复制品(replica ),一实际个节点(机器)对应了若干个“虚拟节点”,这个对应个数也成为“复制个数”,“虚拟节点”在hash 空间中以hash值排列。

以上面只部署了NODE1和NODE3的情况(NODE2被删除的图)为例,之前的对象在机器上的分布很不均衡,现在我们以2个副本(复制个数)为例,这样整个hash环中就存在了4个虚拟节点,最后对象映射的关系图如下:

根据上图可知对象的映射关系:object1->NODE1-1,object2->NODE1-2,object3->NODE3-2,object4->NODE3-1。通过虚拟节点的引入,对象的分布就比较均衡了。那么在实际操作中,正真的对象查询是如何工作的呢?对象从hash到虚拟节点到实际节点的转换如下图:

“虚拟节点”的hash计算可以采用对应节点的IP地址加数字后缀的方式。例如假设NODE1的IP地址为192.168.1.100。引入“虚拟节点”前,计算cache A 的hash 值:

Hash(“192.168.1.100”);

引入“虚拟节点”后,计算“虚拟节”点NODE1-1和NODE1-2的hash值:

Hash(“192.168.1.100#1”); // NODE1-1

Hash(“192.168.1.100#2”); // NODE1-2

国家地形图的分幅和编号规则

我国地形图的分幅和编号规则 国家基本比例尺地形图有1:1万、1:2.5万、1:5万、1:10万、1:20万、1:50万和1:100万七种。普通地图通常按比例尺分为大、中、小三种,一般以1:10万和更大比例尺的地图称为大比例尺地图;1:10万至1:100万的称为中比例尺地图;小于1:100万的称为小比例尺地图。对于一个国家或世界范围来讲,测制成套的各种比例尺地形图时,分幅编号尤其必要。通常这是由国家主管部门制定统一的图幅分幅和编号系统。 1、地形图的分幅 目前,我国采用的地形图分幅方案,是以1:100万地形图为基准,按照相同的经差和纬差定义更大比例尺地形图的分幅。百万分之一地图在纬度0°-60°之间的图幅,图幅大小按经差6°,纬差4°分幅;在60°-76°之间的图幅,其经差为12°,纬差为4°;在76°-80°之间图幅的经差为24°,纬差为4°,所以在纬度0°-60°之间各幅百万分之一地图都是经差6°,纬差4°分幅的。 每幅百万分之一内各级较大比例尺地形图的划分,按规定的相应经纬差进行,其中,1:50万、1:20万、1:10万三种比例尺地形图,以百万分之一地图为基础直接划分。一幅百万分之一地形图划分四幅1:50万地形图,每幅为经差3°,纬差2°;一幅百万分之一地图划分为36幅1:20万地形图,每幅为经差1°,纬差40′;一幅百万分之一地图划分144幅1:10万地形图,每幅为经差30’,纬差20’。每幅大于1:10万比例尺的地形图,则以1:10万图为基础进行逐级划分,一幅1:10万地形图划分四幅1:5万地形图; 一幅1:5万地形图划分为四幅1:2.5万地形图。在1:10万图的基础上划分为64幅1:1万地形图;一幅1:1万地形图又划分为4幅1:5000地形图,(见表1-1)。 表1-1:基本比例尺地形图的图幅大小及其图幅间的数量关系。 比例尺纬度经度图幅数 1:100 6度4度1 (经差6°,维差4°) 1:50 3度2度4 1 (1:100划分为了4幅1:50;毎幅经差3°,纬差2°)1:20 1度40分36 9 1 (1:100划分为了36幅1:20,1:50划分为9幅1:20万;毎幅经差1°,纬差40′) 1:10 30分20分144 36 4 1 1:5 15分10分576 144 16 4 1 (1:100划分为576幅1:5,1:50划分为144:1:5;1:20划分为16幅1:5,依次推...) 1:2.5 7.5分5分2304 576 64 16 4 1 1:1 3分45秒2.5分9216 2304 256 64 16 4 2、分幅编号 地形图的编号是根据各种比例尺地形图的分幅,对每一幅地图给予一个固定的号码,这种号码不能重复出现,并要保持一定的系统性。 地形图编号的最基本的方法是采用行列法,即把每幅图所在一定范围内的行数和列数组成一个号码。

地图分幅的基本知识

地图分幅的基本知识 地形图的编号是根据各种比例尺地形图的分幅,对每一幅地图给予一个固定的号码,这种号码不能重复出现,并要保持一定的系统性。 地形图编号的最基本的方法是采用行列法,即把每幅图所在一定范围内的行数和列数组成一个号码。 国家基本比例尺地形图有1:1万、1:2.5万、1:5万、1:10万、1:20万、1:50万和1:100万七种。 普通地图通常按比例尺分为大、中、小三种,一般以1:10万和更大比例尺的地图称为大比例尺地图;1:10万至1:100万的称为中比例尺地图;小于1:100万的称为小比例尺地图。 对于一个国家或世界范围来讲,测制成套的各种比例尺地形图时,分幅编号尤其必要。通常这是由国家主管部门制定统一的图幅分幅和编号系统。 1) 1:100万地图的编号 该种地形图的编号为全球统一分幅编号。 列数:由赤道起向南北两极每隔纬差4o为一列,直到南北88o(南北纬88o至南北两极地区,采用极方位投影单独成图),将南北半球各划分为22列,分别用拉丁字母A、B、C、D……V 表示。 行数:从经度180 o起向东每隔6 o为一行,绕地球一周共有60行,分别以数字1、2、3、4……60表示 由于南北两半球的经度相同,规定在南半球的图号前加一个S,北半球的图号前不加任何符号。一般来讲,把列数的字母写在前,行数的数字写在后,中间用一条短线连接。例如北京所在的一幅百万分之一地图的编号为J-50(如图14所示)。 由于地球的经线向两极收敛,随着纬度的增加,同是6o的经差但其纬线弧长已逐渐缩小,因此规定在纬度60 o-76 o间的图幅采用双幅合并(经差为12 o,纬差为4 o);在纬度76o-88o间的图幅采用四幅合并(经差为24o,纬差为4o)。这些合并图幅的编号,列数不变,行数(无论包含两个或四个)并列写在其后。例如北纬80o-84o,西经48o-72o的一幅百万分之一的地图编号应为U-19、20、21、22。

地形图分幅

地图分幅编号 为了便于地形图的测绘、使用和保管,需要将大范围内的地形图进行分幅,并将分幅的地形图进行系统的编号。地形图的分幅方法有两大类:一是按经纬线分幅的梯形分幅法,另一种是按坐标格网划分的矩形分幅法。常见的地图编号方法有自然系数编号法、行列式编号法、行列-自然系数编号法。 一、梯形分幅与编号方法 地图的图廓由经纬格网线构成。我国的基本比例尺地形图是以经纬线分幅制作的,它们都是以1:100万比例尺地形图为基础,按规定的经差和纬差划分图幅,行列数和图幅数成简单的倍数关系,如图6-1所示。图中虚线表示现已不用。1:100万比例尺地形图的分幅编号是由国际统一规定的,作法是将整个地球表面用子午线分成60个6?纵列,由经度180?起,自西向东用阿拉伯数字1~60编列号数。同时,由赤道起分别向南向北直至纬度88?止,每隔4?的纬圈分成许多横行,这些横行用大写的拉丁字母A、B、C、……V标明,以两极为中心,以纬度88?为界的圈,则用Z标明。也就是说,一张1:100万比例尺地形图是有为差4?的纬圈和经差6?的子午圈所形成的梯形。其编号采用行列式编号法,由“横行-纵列”格式组成,图6-2为我国领域的1:100万比例尺地形图图幅编号。例如甲地位于北纬39?54'30",东经122?28'25",则该地所在1:100万图幅编号为J-51。 图6-1 我国基本比例尺地形图的分幅编号系统图

图6-2 我国领域的1:100万比例尺地形图图幅编号图 基本比例尺地形图之间的划分存在层次关系。例如1:10万比例尺地形图是将1:100万地形图划分成12行12列,共144幅,代号分别用1,2,3,,144表示。 以上梯形分幅与编号的方法是我国70~80年代的分幅与编号系统。为便于图幅编号的计算机处理,1991年我国制定订了《国家基本比例尺地形图分幅与编号方法》的国家标准。其主要特点是:分幅仍然以1:100万地图为基础,经纬差不变,但划分全部由1:100万地形图逐次加密划分而成;编号仍然以1:100万地图编号为基础,由下接相应比例尺的行、列代码所组成,并增加了比例尺代码(表6.2),所有地形图的图号均由五个元素10位编码组成,如图6-3所示。 表6.2 地形图比例尺代码表

新的地形图分幅标准

地形图的分幅与编号 ——新的地形图分幅标准 新的地形图分幅标准是指1991年国家测绘局制订并颁布实施的“国家基本比例尺地形图分幅和编号国家标准”。 1、地形图的分幅: 各种比例尺地形图均以1:100万地形图为基础图,沿用原分幅各种比例尺地形图的经纬差(如图1-1),全部由1:100万地形图按相应比例尺地形图的经纬差逐次加密划分图幅,以横为行,纵为列。 图1-1 2、地形图的编号 (1)1:100万地形图新的编号方法,除行号与列号改为连写外,没有任何变化,如北京所在的1:100万地形图的图号由J-50改写为J50。 (2)1:50万至1:5000地形图的编号,均以1:100万地形图编号为基础,采用行列式编号法,将1:100万地形图按所含各种比例尺地形图的经纬差划分成相应的行和列,横行自上而下,纵列从左到右,按顺序均用阿拉伯数字编号,皆用3位数字表示,凡不足3位数的,则在其前补0。 各大中比例尺地形图的图号均由五个元素10位码构成。从左向右,第一元素1位码,为1:100万图幅行号字符码;第二元素2位码,为1:100万图幅列号数字码;第三元素1位码,为编号地形图相应比例尺的字符代码;第四元素3位码,为编号地形图图幅行号数字码;第五元素3位码,为编号地形图图幅列号数字码;各元素均连写(如图2-1)。比例尺代码见图2-2;

图2-1 图2-2 新分幅编号系统的主要优点是编码系列统一于一个根部,编码长度相同,便于计算机处理。 3、新编号系统的应用 (1)由已知某地地理坐标(x,y),则按下列程序计算其所在某比例尺地形图的图号: A 按下列公式求出基础图1:100万图幅的图号: h=[y/△y]+1 l=[x/△x]+1 其中y表示纬度,△y表示百万分之一地图的纬差;x表示经度,△x表示百万分之一地图的经差。[ ]为商取整符号,如9.3则取9。h表示行号,l表示列号 我国疆域位于东半球,故纵列号大于30,上式改写为: h=[y/△y]+1 l=[x/△x]+31 B 按下式计算所求图号的地形图在基础图幅内位于的行号和列号: h’=△y/△y’ —[(y/△y)/△y’] l’=[ (x/△x)/ △x’] +1 其中△y、△x表示百万分之一地形图的纬差、经差;△y’、△x’表示所求图号的地形图图幅的纬差与经差,h’表示行号、l’表示列号。 备注:其中[ ]为商取整符号,( )表示求余数如(39°22’30’’/4°)=3°22’30’’ C 计算的结果引入欲求图号那地形图的比例尺代码,按图号构成规律,写出所求的图号。

我国基本比例尺地形图分幅与编号

我国基本比例尺地形图分幅与编号,以1:100万地形图为基础,按规定的经差和纬差划分图幅。 1:100万采用国际1:1000000地图分幅标准。每幅1:1000000地形图范围是经差6°,纬差4°;纬度66°~76°之间经差12°,纬差4°;纬度76°~88°之间纬经差24°,纬差4°(在我国没有纬度60°以上的需要合幅图幅) 1:1000000地图编号采用国际1:1000000地图编号标准。从赤道起算,每纬差4°为一行,至88°,南北半球各分为22横列,依次编号A、B、... V;由精度180°西向东每6°一列,全球60列,以1-60表示,如海南所在1:100万图在第5行,第49列,其编号为E49 ;北京为J50 每幅1:100万地形图划分为2行2列,按经差3°纬差2°分成四幅1:50万地形图 每幅1:100万地形图划分为4行4列,按经差1°30′纬差1°分成16幅1:25万地形图每幅1:100万地形图划分为12行12列,按经差30′纬差20′分成144幅1:10万地形图 每幅1:100万地形图划分为24行24列,按经差15′纬差10′分成576幅1:5万地形图每幅1:100万地形图划分为48行48列,按经差7′30″纬差5′分成2304幅1:2.5万每幅1:100万地形图划分为96行96列,按经差3′45″纬差2′30″分成9216幅1:1万地形图

每幅1:100万地形图划分为192行192列,按经差1′52″纬差1′15″分成36864幅1:5000地形图 地形图的分幅与编号 地形图的分幅方法有两种:一种是经纬网梯形分幅法或国际分幅法;另一种是坐标格网正方形或矩形分幅法。前者用于国家基本比例尺地形图,后者用于工程建设大比例尺地形图。 一、经纬网国际分幅法: 1) 1∶100万比例尺地形图的分幅和编号 1∶100万地形图分幅和编号是采用国际标准分幅的经差6°、纬差4°为一幅图。从赤道起向北或向南至纬度88°止,按纬差每4°划作22个横列,依次用A、B、……、V表示;从经度180°起向东按经差每6°划作一纵行,全球共划分为60纵行,依次用1、2、……、60表示。 每幅图的编号由该图幅所在的“列号——行号”组成。例如,北京某地的经度为116°26′08″、纬度为39°55′20″,所在1∶100万地形图的编号为J-50。 2) 1∶50万、1∶25万、1∶10万比例尺地形图的分幅和编号 这三种例尺地形图都是在1∶100万地形图的基础上进行分幅编号的. 一幅1∶100万的图可划分出为4幅1∶50万的图,分别以代码A、B、C、D表示。将1∶100万图幅的编号加上代码,即为该代码图幅的编号,例1∶50万图幅的编号为J-50-A。 一幅1∶100万的图可划分出16幅1∶25万的图,分别用[1]、[2]、……、[16]代码表示。将1∶100万图幅的编号加上代码,即为该代码图幅的编号,例1∶25万图幅的编号为J-50-[1]。

地形图的分幅方法有两种

地形图的分幅方法有两种:一种是经纬网梯形分幅法或国际分幅法;另一种是坐标格网正方形或矩形分幅法。前者用于国家基本比例尺地形图,后者用于工程建设大比例尺地形图。 一、经纬网国际分幅法: 1) 1∶100万比例尺地形图的分幅和编号 1∶100万地形图分幅和编号是采用国际标准分幅的经差6°、纬差4°为一幅图。从赤道起向北或向南至纬度88°止,按纬差每4°划作22个横列,依次用A、B、……、V表示;从经度180°起向东按经差每6°划作一纵行,全球共划分为60纵行,依次用1、2、……、60表示。 每幅图的编号由该图幅所在的“列号——行号”组成。例如,北京某地的经度为116°26′08″、纬度为39°55′20″,所在1∶100万地形图的编号为J-50。 2) 1∶50万、1∶25万、1∶10万比例尺地形图的分幅和编号 这三种例尺地形图都是在1∶100万地形图的基础上进行分幅编号的. 一幅1∶100万的图可划分出为4幅1∶50万的图,分别以代码A、B、C、D表示。将1∶100万图幅的编号加上代码,即为该代码图幅的编号,例1∶50万图幅的编号为J-50-A。 一幅1∶100万的图可划分出16幅1∶25万的图,分别用[1]、[2]、……、[16]代码表示。将1∶100万图幅的编号加上代码,即为该代码图幅的编号,例1∶25万图幅的编号为J-50-[1]。 一幅1∶100万的图,可划分出144幅1∶10万的图,分别用1、2、……、144代码表示。将1∶100万图幅的编号加上代码,即为该代码图幅的编号,例1∶10万图幅的编号为J-50-1。 3)新标准: 92年12月,我国颁布了《国家基本比例尺地形图分幅和编号GB/T139 89—92》新标准,1993年3月开始实施。新的分幅与编号方法如下。 A.分幅 1∶100万地形图的分幅标准仍按国际分幅法进行。其余比例尺的分幅均以 1∶100万地形图为基础,按照横行数纵列数的多少划分图幅。 B.编号 1∶100万图幅的编号,由图幅所在的“行号列号”组成。与国际编号基本相同,但行与列的称谓相反。如北京所在1∶100万图幅编号为J50。

地形图分幅方法

第九章地形图的应用 教学目的:学会地形图的一般应用。 教学重点:1.地形图应用的基本知识 2.面积量算。 教学难点:地形图的分幅与编号。 教学资料:测量学教材、教学课件 教学方法:讲授法、讲解法、演示法 讲授新课: 第一节地形图的分幅与编号 为了便于测绘和拼接、贮存和保管以及检索和使用系列地形图,需将各种比例尺地形图统一分幅和编号。 地形图分幅方法分为两类,一类是按经纬线分幅的梯形分幅法(又称为国际分幅),另一类是按坐标格网分幅的矩形分幅法。前者用于国家基本图的分幅,后者则用于城市或工程建设大比例尺地形图的分幅。 一、梯形分幅和编号 梯形分幅编号法有两种形式,一种是1990年以前地形图分幅编号标准产生的,称为旧分幅与编号;另一种是1990年以后新的国家地形图分幅编号标准所产生的,称为新分幅与编号。 (一)国际分幅法: 1.国际1:100万比例尺地形图的分幅与编号

全球1:100万的地形图实行统一的分幅与编号。即,将整个地球表面自180°子午线由西向东起算,经差每隔6°划分纵行,全球共60纵行,用阿拉伯数字1~60表示。又从赤道起,分别向南、向北按纬差4°划分成22横列,以大写拉丁字母A、B、…、V表示。任一幅1:100万比例尺地形图的大小就是由纬差4°的两纬线和经差6°的两经线所围成的面积,每一幅图的编号由其所在的“横列—纵行”的代号组成。例如,某处的经度为114°30′18″、纬度为38°16′08″,则其所在图幅之编号为J-50,如图8-1所示。为了说明该图幅位于北半球还是南半球,应在编号前附加一个N(北)或S(南)字母,由于我国国土均位于北半球,故N字母从略。国际1:100万图的分幅与编号是其余各种比例尺图梯形分幅的基础。 1:10万,再以1:10万为基础,延伸出1:5万、1:2.5万及1:1万三种比例尺。 1:100万从赤道起向两极每纬差4°为一行,至88°,南北半球各分为22横列,依次编号A、B、… V;由精度180°西向东每6°一列,全球60列,以1-60表示,如海南所在1:100万图在第5行,第49列,其编号为 E-49 在1:100万图上,按经差3°纬差2°分成四幅1:50万地形图,编为A、B、C、D,如E-49-A 按经差1°30′纬差1°分成16幅1:25万地形图,编为[1]、…[16],如 E-49-[1]。按经差30′纬差20′分成144幅1:10万地形图,编为1、…144,如 E-49-1。既后三种比例尺各自独立地与1:100万地图的图号联系。 1:10万图上每经差15′纬差10′分成四幅1:5万地形图,编为A、B、C、D,如 E-49

相关文档
最新文档