Skip to content

Commit 2b1728b

Browse files
Hiroaki.KawaiHiroaki.Kawai
Hiroaki.Kawai
authored and
Hiroaki.Kawai
committed
add jpgrid test code.
1 parent 427056a commit 2b1728b

File tree

2 files changed

+78
-1
lines changed

2 files changed

+78
-1
lines changed

jpgrid.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ def _encode_i2c(lat, lon, base1):
4242
return ''.join([str(i) for i in t])
4343

4444
def encode(latitude, longitude, base1=80):
45-
return _encode_i2c(int(latitude*base1*1.5), int((longitude-100)*base1), base1)
45+
return _encode_i2c(int(latitude*base1*1.5), int(longitude*base1-100.0*base1), base1)
4646

4747
#def _encode_i2c(lat, lon, base1):
4848
def _decode_c2i(gridcode):
@@ -97,6 +97,7 @@ def decode_sw(gridcode, delta=False):
9797
def decode(gridcode):
9898
(lat, lon, base1) = _decode_c2i(gridcode)
9999

100+
# center position of the meshcode.
100101
lat = (lat<<1) + 1
101102
lon = (lon<<1) + 1
102103
base1 = base1<<1

test/test_jpgrid.py

+76
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
# coding: UTF-8
2+
import unittest
3+
import jpgrid
4+
5+
class TestReference(unittest.TestCase):
6+
def test_lv1(self):
7+
self.assertEqual("5438", jpgrid.encodeLv1(36,138))
8+
9+
def test_prefectures(self):
10+
# http://www.stat.go.jp/data/mesh/pdf/gaiyo1.pdf
11+
# page. 15
12+
def dms(d,m,s):
13+
return float(d) + (float(m) + float(s)/60)/60.0
14+
15+
dataset = [
16+
("北海道", "札幌市", "6441-42-77", ("43","03","30"), ("141","20","15")),
17+
("青森県", "青森市", "6140-15-89", ("40","49","00"), ("140","44","15")),
18+
("岩手県", "盛岡市", "5941-41-42", ("39","42","00"), ("141","09","00")),
19+
("宮城県", "仙台市", "5740-36-29", ("38","16","00"), ("140","51","45")),
20+
("秋田県", "秋田市", "5940-40-68", ("39","43","00"), ("140","06","00")),
21+
("山形県", "山形市", "5740-22-89", ("38","14","00"), ("140","21","45")),
22+
("福島県", "福島市", "5640-53-07", ("37","45","00"), ("140","27","45")),
23+
("茨城県", "水戸市", "5440-43-15", ("36","20","30"), ("140","26","15")),
24+
("栃木県", "宇都宮市", "5439-67-70", ("36","33","30"), ("139","52","30")),
25+
("群馬県", "前橋市", "5439-40-64", ("36","23","00"), ("139","03","00")),
26+
("埼玉県", "さいたま市", "5339-65-21", ("35","51","00"), ("139","38","15")),
27+
("千葉県", "千葉市", "5340-30-29", ("35","36","00"), ("140","06","45")),
28+
("東京都", "新宿区", "5339-45-25", ("35","41","00"), ("139","41","15")),
29+
("神奈川県", "横浜市", "5339-15-31", ("35","26","30"), ("139","38","15")),
30+
("新潟県", "新潟市", "5639-60-81", ("37","54","00"), ("139","00","45")),
31+
("富山県", "富山市", "5537-01-36", ("36","41","30"), ("137","12","00")),
32+
("石川県", "金沢市", "5436-75-10", ("36","35","30"), ("136","37","30")),
33+
("福井県", "福井市", "5436-01-77", ("36","03","30"), ("136","12","45")),
34+
("山梨県", "甲府市", "5338-34-95", ("35","39","30"), ("138","33","45")),
35+
("長野県", "長野市", "5438-71-84", ("36","39","00"), ("138","10","30")),
36+
("岐阜県", "岐阜市", "5336-05-67", ("35","23","00"), ("136","42","45")),
37+
("静岡県", "静岡市", "5238-33-70", ("34","58","30"), ("138","22","30")),
38+
("愛知県", "名古屋市", "5236-67-12", ("35","10","30"), ("136","54","00")),
39+
("三重県", "津市", "5236-04-70", ("34","43","30"), ("136","30","00")),
40+
("滋賀県", "大津市", "5235-46-09", ("35","00","00"), ("135","51","45")),
41+
("京都府", "京都市", "5235-46-20", ("35","01","00"), ("135","45","00")),
42+
("大阪府", "大阪市", "5235-04-21", ("34","41","00"), ("135","30","45")),
43+
("兵庫県", "神戸市", "5235-01-24", ("34","41","00"), ("135","10","30")),
44+
("奈良県", "奈良市", "5235-06-26", ("34","41","00"), ("135","49","30")),
45+
("和歌山県", "和歌山市", "5135-21-73", ("34","13","30"), ("135","09","45")),
46+
("鳥取県", "鳥取市", "5334-21-09", ("35","30","00"), ("134","14","15")),
47+
("島根県", "松江市", "5333-10-64", ("35","28","00"), ("133","03","00")),
48+
("岡山県", "岡山市", "5133-77-94", ("34","39","30"), ("133","55","30")),
49+
("広島県", "広島市", "5132-43-76", ("34","23","30"), ("132","27","00")),
50+
("山口県", "山口市", "5131-23-27", ("34","11","00"), ("131","27","45")),
51+
("徳島県", "徳島市", "5134-04-74", ("34","03","30"), ("134","33","00")),
52+
("香川県", "高松市", "5134-40-03", ("34","20","00"), ("134","02","15")),
53+
("愛媛県", "松山市", "5032-66-01", ("33","50","00"), ("132","45","45")),
54+
("高知県", "高知市", "5033-24-72", ("33","33","30"), ("133","31","30")),
55+
("福岡県", "福岡市", "5030-33-23", ("33","36","00"), ("130","24","45")),
56+
("佐賀県", "佐賀市", "4930-62-93", ("33","14","30"), ("130","17","15")),
57+
("長崎県", "長崎市", "4929-06-99", ("32","44","30"), ("129","51","45")),
58+
("熊本県", "熊本市", "4930-15-49", ("32","47","00"), ("130","44","15")),
59+
("大分県", "大分市", "4931-64-89", ("33","14","00"), ("131","36","45")),
60+
("宮崎県", "宮崎市", "4731-63-93", ("31","54","30"), ("131","24","45")),
61+
("鹿児島県", "鹿児島市", "4730-24-74", ("31","33","30"), ("130","33","00")),
62+
("沖縄県", "那覇市", "3927-25-54", ("26","12","30"), ("127","40","30"))
63+
]
64+
65+
for data in dataset:
66+
# encode
67+
self.assertEqual(data[2].replace("-",""), jpgrid.encode(dms(*data[3]), dms(*data[4])))
68+
t = jpgrid.decode(data[2].replace("-",""))
69+
# decode
70+
self.assertTrue(t[0] > dms(*data[3]))
71+
self.assertTrue(t[0] < dms(*data[3]) + 1.5/80.0)
72+
self.assertTrue(t[1] > dms(*data[4]))
73+
self.assertTrue(t[1] < dms(*data[4]) + 1.0/80.0)
74+
75+
if __name__=='__main__':
76+
unittest.main()

0 commit comments

Comments
 (0)