បណ្ណាល័យទិន្នន័យភូមិសាស្ត្ររដ្ឋបាលកម្ពុជា (ខេត្ត ស្រុក ឃុំ ភូមិ) ស្រាល និងគ្មាន runtime dependency។ ដំណើរការដូចគ្នាបេះបិទលើ JavaScript, Python, និង PHP ដោយផ្អែកលើការផ្ទៀងផ្ទាត់តេស្តជាក់លាក់ spec/conformance.json។
Lightweight, zero-dependency library for Cambodia's administrative divisions (provinces, districts, communes, villages). Identical behavior across JavaScript, Python, and PHP guaranteed by spec/conformance.json.
ដំណើរការផ្ទាល់លើ browser ដោយទាញចេញពី https://cdn.jsdelivr.net/npm/cambodia-geo/+esm ផ្ទាល់ (គ្មាន Bundler គ្មាន Build Step)។
Running directly in-browser using the native ESM CDN import without build tools.
បណ្ណាល័យទាំង ៣ ត្រូវបានបង្កើតឡើងតាមបទបញ្ញត្តិរួម SPEC.md ដោយមានច្បាប់ច្បាស់លាស់ក្នុងការ Parse និង Search ទិន្នន័យ៖
All three libraries strictly adhere to the unified SPEC.md with clear parsing and matching rules:
- ' . ,) និង zero-width chars (U+200B ដល់ U+200D) ធានាការស្វែងរកមិនខុស។
Strips whitespace, punctuation, and zero-width spaces (U+200B..U+200D) for fail-safe matching.
"១៧", "017", 17 គឺស្មើគ្នា)។
Handles Arabic & Khmer numerals seamlessly ("១៧", "017", and 17 are equivalent).
ប្រើជាមួយ bundlers (Vite, Rollup, Webpack, esbuild, Turbopack, Rspack) និង meta-frameworks (Next.js, Nuxt.js, Nest.js) ឬ ប្រើ ESM CDN លើ browser ផ្ទាល់ដោយមិនបាច់ bundle៖
Install for modern bundlers (Vite, Rollup, Webpack, Turbopack) & frameworks (Next.js, Nuxt.js), or import directly using native ESM CDN without any bundler:
npm install cambodia-geo
<script type="module">
import { provinces, districts } from 'https://cdn.jsdelivr.net/npm/cambodia-geo/+esm';
console.log(provinces());
</script>
តម្រូវការ Python 3.9+ គ្មាន dependency ខាងក្រៅឡើយ ហើយទិន្នន័យផ្ទុកជា frozen dataclasses (type safe)។
Requires Python 3.9+, zero dependencies, typed frozen dataclasses.
pip install cambodia-geo
តម្រូវការ PHP 8.1+ ដំណើរការលឿនបំផុត (~3ms ជាមួយ OPcache) គាំទ្រទាំង Laravel, Symfony និង WordPress។
Requires PHP 8.1+, blazing fast (~3ms with OPcache), compatible with Laravel & Symfony.
composer require bsthen/cambodia-geo
import { provinces, districts, communes, villages, getProvince, search } from 'cambodia-geo';
// 1. ស្វែងរកតាមលំដាប់ថ្នាក់ (Hierarchical listings)
provinces(); // គ្រប់ខេត្ត/រាជធានី
districts('Siemreap'); // ស្រុកក្នុងខេត្តសៀមរាប
communes('17', 'Angkor Thum'); // ឃុំក្នុងស្រុកអង្គរធំ
villages('សៀមរាប', 1702, 'ជប់តាត្រាវ'); // ភូមិក្នុងឃុំ
// 2. Single Record Lookup & Search
const p = getProvince('សៀមរាប'); // { code: '17', nameKh: '...', nameEn: '...' }
search('angkor', { level: 'district' }); // ស្វែងរកតាមឈ្មោះ ឬកូដ
import cambodia_geo as kh
# 1. ស្វែងរកតាមលំដាប់ថ្នាក់ (Hierarchical listings)
kh.provinces() # គ្រប់ខេត្ត/រាជធានី
kh.districts("Siemreap") # ស្រុកក្នុងខេត្តសៀមរាប
kh.communes("17", "Angkor Thum") # ឃុំក្នុងស្រុក
kh.villages("សៀមរាប", 1702, "ជប់តាត្រាវ") # ភូមិក្នុងឃុំ
# 2. Single Record Lookup & Search
p = kh.get_province("សៀមរាប") # Dataclass: code, name_kh, name_en
kh.get_district("Angkor Thum", province="Siemreap")
kh.search("angkor") # ស្វែងរកទូទាំងប្រទេស
use CambodiaGeo\Geo;
// 1. ស្វែងរកតាមលំដាប់ថ្នាក់ (Hierarchical listings)
Geo::provinces(); // គ្រប់ខេត្ត/រាជធានី
Geo::districts('Siemreap'); // ស្រុកក្នុងខេត្តសៀមរាប
Geo::communes('17', 'Angkor Thum'); // ឃុំក្នុងស្រុក
Geo::villages('សៀមរាប', 1702, 'ជប់តាត្រាវ'); // ភូមិក្នុងឃុំ
// 2. Single Record Lookup & Search
$p = Geo::getProvince('សៀមរាប'); // Province: $p->code, $p->nameKh, $p->nameEn
Geo::getDistrict('Angkor Thum', province: 'Siemreap');
Geo::search('angkor', level: 'district'); // ស្វែងរកតាមឈ្មោះ ឬកូដ