Phân ChiaWiki
Tìm
Đường phân chia trên Trái Đất

Chia Trái Đất thành ô lưới: geohash, Plus Code và lục giác H3

Geohash chia đôi kinh vĩ độ, Plus Code chia ô 20 × 20, H3 phủ địa cầu bằng lục giác kèm đúng 12 ngũ giác. Cách tính tay mã vị trí và vì sao không lưới nào hoàn hảo.

Chia Trái Đất thành ô lưới: geohash, Plus Code và lục giác H3

Muốn gọi tên một chỗ trên Trái Đất bằng một mã ngắn, người ta chia bề mặt địa cầu thành các ô lưới rồi đánh số từng ô. Geohash chia đôi liên tục kinh độ và vĩ độ rồi viết kết quả bằng chữ và số; Plus Code chia mỗi ô thành 20 × 20 ô con; hệ H3 do Uber công bố năm 2018 phủ địa cầu bằng các ô lục giác. Cả ba đều phải đối mặt với một sự thật hình học: không thể lát mặt cầu bằng những ô giống hệt nhau mà không có chỗ méo.

Lưới kinh vĩ: cách chia đầu tiên và cái méo của nó

Cách tự nhiên nhất là kẻ ô theo kinh độ và vĩ độ, mỗi ô 1° × 1°. Theo chiều bắc – nam, 1° vĩ luôn dài khoảng 111 km. Theo chiều đông – tây, 1° kinh dài 111 × cos φ km, với φ là vĩ độ. Tính tay:

Vĩ độVí dụ1° kinh dàiDiện tích ô 1° × 1°
0°xích đạokhoảng 111 kmkhoảng 12.400 km²
10,8° BTP. Hồ Chí Minhkhoảng 109 kmkhoảng 12.100 km²
21° BHà Nộikhoảng 104 kmkhoảng 11.500 km²
60° BOslo, Helsinkikhoảng 56 kmkhoảng 6.200 km²
89° Bsát Bắc Cựckhoảng 1,9 kmkhoảng 215 km²

Cùng gọi là "một ô", nhưng ô ở xích đạo rộng gấp hơn năm mươi lần ô sát cực, và các ô hàng trên cùng teo lại thành hình tam giác chụm vào một điểm. Với dữ liệu ở Việt Nam, chênh lệch giữa Bắc và Nam chỉ vài phần trăm nên lưới kinh vĩ vẫn dùng tốt. Với dữ liệu toàn cầu, độ méo này làm sai các phép thống kê theo ô.

Hệ toạ độ UTM giải quyết một phần bằng cách chia địa cầu thành 60 múi, mỗi múi rộng 6° kinh, chiếu từng múi lên mặt phẳng riêng. Lãnh thổ đất liền Việt Nam nằm trong hai múi 48 và 49, ranh giới ở kinh tuyến 108° Đ.

Geohash: chia đôi mãi, viết bằng 32 ký tự

Geohash được Gustavo Niemeyer công bố năm 2008. Ý tưởng là phép chia đôi lặp lại, giống trò đoán số "lớn hơn hay nhỏ hơn":

  1. Khoảng kinh độ [−180°, 180°] chia đôi tại 0°. Điểm nằm nửa đông ghi 1, nửa tây ghi 0.
  2. Khoảng vĩ độ [−90°, 90°] chia đôi tại 0°. Nửa bắc ghi 1, nửa nam ghi 0.
  3. Lặp lại, xen kẽ kinh độ và vĩ độ, mỗi lần thu hẹp khoảng chứa điểm còn một nửa.
  4. Gom mỗi 5 bit thành một số từ 0 tới 31, viết bằng bảng 32 ký tự gồm chữ số 0–9 và chữ cái thường, bỏ a, i, l, o cho đỡ nhầm.

Tính tay ký tự đầu tiên của Hồ Hoàn Kiếm

Hồ Hoàn Kiếm ở khoảng 21,03° B, 105,85° Đ.

  • Bit 1 (kinh độ, chia tại 0°): 105,85 > 0, ghi 1. Khoảng còn [0°, 180°].
  • Bit 2 (vĩ độ, chia tại 0°): 21,03 > 0, ghi 1. Khoảng còn [0°, 90°].
  • Bit 3 (kinh độ, chia tại 90°): 105,85 > 90, ghi 1. Còn [90°, 180°].
  • Bit 4 (vĩ độ, chia tại 45°): 21,03 < 45, ghi 0. Còn [0°, 45°].
  • Bit 5 (kinh độ, chia tại 135°): 105,85 < 135, ghi 0.

Năm bit 11100 là số 28 trong hệ nhị phân. Trong bảng ký tự geohash, vị trí 28 là chữ w. Làm tiếp sẽ ra mã bắt đầu bằng w7er, và đầy đủ 8 ký tự là w7er8sp5. Một vùng rộng gồm phần lớn Đông Nam Á lục địa cùng nằm trong ô "w".

Mỗi ký tự thêm vào chia ô thành 32 ô con. Kích thước gần đúng ở xích đạo:

Số ký tựKích thước ô (gần đúng)Đủ để chỉ
439 km × 19,5 kmmột vùng đô thị
54,9 km × 4,9 kmmột khu phố lớn
61,2 km × 0,6 kmmột phường nhỏ
7153 m × 153 mmột khối nhà
838 m × 19 mmột toà nhà

Điểm mạnh lớn nhất: hai chỗ có chung tiền tố thì nằm gần nhau, nên cơ sở dữ liệu tìm "các điểm quanh đây" chỉ cần so đầu chuỗi. Điểm yếu cũng rõ: hai chỗ cách nhau vài mét nhưng nằm hai bên một đường chia lớn (ví dụ xích đạo hay kinh tuyến 0°) có thể không chung ký tự nào. Phần mềm phải luôn xét thêm tám ô láng giềng. Thứ tự các ô geohash đi theo đường cong hình chữ Z lặp lại ở mọi cấp, gọi là đường cong Z-order.

Plus Code: chia 20 × 20, mã mở cho nơi chưa có địa chỉ

Năm 2014, nhóm kỹ sư của Google ở Zurich công bố Open Location Code, thường gọi là Plus Code, cho những nơi trên thế giới chưa có tên đường, số nhà. Cách chia:

  1. Cặp ký tự đầu chia địa cầu thành ô 20° × 20° (9 hàng vĩ độ × 18 cột kinh độ).
  2. Mỗi cặp tiếp theo chia ô hiện tại thành 20 × 20 ô con: 1°, rồi 0,05°, rồi 0,0025°.
  3. Sau 8 ký tự đặt dấu "+", rồi thêm một cặp nữa, ô cỡ 0,000125°, khoảng 14 m × 14 m.

Bảng 20 ký tự gồm các chữ số 2–9 và 12 chữ cái được chọn để tránh tạo thành từ có nghĩa và tránh nhầm lẫn (không có 0, 1, chữ O, chữ I…). Với Hồ Hoàn Kiếm, mã đầy đủ 10 ký tự là 7PH72VH2+CV. Trong đời thường, người ta bỏ bốn ký tự đầu và thay bằng tên thành phố, kiểu "2VH2+CV Hà Nội", vì ai cũng biết mình đang ở thành phố nào.

Plus Code là chuẩn mở, ai cũng tính được mà không cần mạng hay bản quyền. Đó là khác biệt lớn với một số hệ thương mại dùng ba từ ngữ cho mỗi ô 3 m × 3 m: dễ nhớ hơn nhưng cần danh sách từ của công ty, và từng bị phê bình vì có những cặp từ nghe giống nhau dẫn tới hai chỗ cách xa.

Vì sao không thể lát quả địa cầu toàn bằng lục giác

Lục giác là hình lý tưởng cho lưới: sáu láng giềng đều cách tâm như nhau, không có láng giềng "chéo" như ô vuông. Nhưng trên mặt cầu, lưới thuần lục giác là bất khả. Công thức Euler cho đa diện lồi nói: số đỉnh − số cạnh + số mặt = 2.

Giả sử phủ mặt cầu bằng h lục giác và p ngũ giác, mỗi đỉnh có đúng ba mặt gặp nhau (như lưới tổ ong). Số mặt F = h + p. Mỗi cạnh thuộc hai mặt: E = (6h + 5p) / 2. Mỗi đỉnh thuộc ba mặt: V = (6h + 5p) / 3. Thay vào V − E + F = 2:

(6h + 5p)/3 − (6h + 5p)/2 + h + p = 2. Quy đồng mẫu 6: 2(6h + 5p) − 3(6h + 5p) + 6h + 6p = 12, tức −6h − 5p + 6h + 6p = 12, ra p = 12.

Số lục giác không bị ràng buộc, nhưng luôn phải có đúng 12 ngũ giác. Quả bóng đá cổ điển có 20 lục giác và 12 ngũ giác là ví dụ quen nhất. Mọi hệ lưới lục giác trên địa cầu đều phải giấu 12 ngũ giác ở đâu đó.

H3: lục giác lồng 16 cấp, giấu ngũ giác ngoài biển

Năm 2018 Uber công bố mã nguồn mở của H3, hệ lưới lục giác toàn cầu họ dùng để phân tích chuyến xe và giá theo khu vực. Cách dựng:

  • Đặt một khối hai mươi mặt đều (icosahedron) vào trong quả địa cầu, xoay sao cho 12 đỉnh của nó đều rơi xuống biển. 12 đỉnh này về sau thành 12 ngũ giác.
  • Cấp thô nhất (cấp 0) có 122 ô: 110 lục giác và 12 ngũ giác.
  • Mỗi cấp tiếp theo chia mỗi ô thành khoảng 7 ô con, xoay nhẹ đi một góc. Có 16 cấp, từ 0 tới 15.
  • Diện tích trung bình: cấp 7 khoảng 5 km², cấp 9 khoảng 0,1 km² (cạnh chừng 170 m), cấp 15 chưa tới 1 m².

Có một cái giá: bảy lục giác con không ghép khít đúng vào lục giác mẹ, mép bị răng cưa. Vì thế H3 không có quan hệ cha – con hoàn hảo như geohash; đổi lại, mọi phép đo "khu vực quanh đây" đều đồng đều theo mọi hướng, rất hợp để đếm, làm mịn dữ liệu, tính lân cận.

Google có một hệ khác tên S2, chiếu địa cầu lên sáu mặt của một khối lập phương rồi chia ô vuông, đánh thứ tự theo đường cong Hilbert để giữ các ô gần nhau ở gần nhau trong danh sách. Giới khoa học gọi chung các hệ này là lưới toàn cầu rời rạc (Discrete Global Grid Systems).

So sánh nhanh các cách chia

HệHình ôMỗi cấp chia thànhĐiểm mạnhĐiểm yếu
Lưới kinh vĩ"chữ nhật" congtuỳ chọnđơn giản, ai cũng hiểuméo mạnh về phía cực
Geohashchữ nhật32tiền tố chung = gần nhaugãy ở đường chia lớn
Plus Codechữ nhật400 (20 × 20)mở, đọc được, dùng ngoại tuyếnô vẫn méo theo vĩ độ
S2tứ giác trên mặt cầu4cha – con khít, thứ tự Hilbertô ở góc khối lập phương méo hơn
H3lục giác (+12 ngũ giác)khoảng 7láng giềng đều, đo lân cận tốtcon không khít mẹ

Góc nhìn hôm nay: tự thử các cách chia

  • Tính geohash bằng tay cho nhà mình tới 5 bit đầu như ví dụ trên. Sau đó thử với một điểm ở TP. Hồ Chí Minh: vẫn ra chữ "w", vì cả hai thành phố nằm trong cùng ô lớn.
  • Xem Plus Code của nhà mình trong ứng dụng bản đồ trên điện thoại: chạm giữ một điểm, mã thường hiện ở phần thông tin. Đọc to cho người nhà nghe và thử xem họ có tìm lại đúng chỗ không.
  • Đếm láng giềng: trên giấy kẻ ô vuông, một ô có 4 láng giềng chung cạnh và 4 láng giềng chung đỉnh, xa gần khác nhau. Trên giấy lục giác, 6 láng giềng như nhau. Đó là lý do các nhà phân tích dữ liệu thích lục giác.
  • Mã bưu chính là một kiểu chia ô khác, theo tuyến đường phát thư chứ không theo hình học; đặt cạnh các lưới trên để thấy hai triết lý chia khác nhau.

Câu hỏi thường gặp

Geohash là gì?

Geohash là cách mã hoá một vị trí thành chuỗi chữ và số bằng cách chia đôi liên tục khoảng kinh độ và vĩ độ, mỗi 5 bit viết thành một ký tự. Chuỗi càng dài thì ô càng nhỏ: 7 ký tự cho ô khoảng 150 m, 8 ký tự cho ô khoảng 38 m × 19 m.

Plus Code là gì và dùng thế nào?

Plus Code là mã vị trí mở do Google công bố năm 2014, chia địa cầu thành ô 20 × 20 lặp lại nhiều cấp. Mã 10 ký tự chỉ một ô khoảng 14 m × 14 m, có thể viết gọn kèm tên thành phố, dùng được cả khi không có mạng.

Vì sao lưới lục giác trên Trái Đất luôn có 12 ngũ giác?

Vì công thức Euler của đa diện: nếu mỗi đỉnh có ba mặt gặp nhau và các mặt chỉ là lục giác, ngũ giác, thì số ngũ giác bắt buộc bằng 12. Quả bóng đá cổ điển là ví dụ quen thuộc.

H3 của Uber là gì?

H3 là hệ lưới lục giác toàn cầu Uber công bố mã nguồn mở năm 2018, có 16 cấp độ phân giải, mỗi cấp chia ô thành khoảng 7 ô con. 12 ngũ giác bắt buộc được đặt ngoài đại dương để ít ảnh hưởng tới dữ liệu trên đất liền.

Một độ kinh độ dài bao nhiêu km?

Ở xích đạo khoảng 111 km, và giảm theo cos của vĩ độ: khoảng 104 km ở Hà Nội, khoảng 56 km ở vĩ độ 60°, bằng 0 ở hai cực. Một độ vĩ độ thì luôn xấp xỉ 111 km.

Mở app Phân Chia

Kéo dây khép đất, hai phút ai rộng nhất

Mở app Phân Chia

Bài viết liên quan

Mở app Phân Chia

Kéo dây khép đất, hai phút ai rộng nhất

Mở app Phân Chia Xem app khác