Module:Boundaries
More actions
This is a documentation subpage for Boundaries. It contains usage information, categories, and other content that is not part of the original template.
This module stores boundary polygons for geographic entities on the wiki. Growing regions, growing areas, and appellations all read their polygon from a single keyed entry here, replacing the inline boundary= parameters that previously lived on each page.
Schema
Each entry is a Lua table with five fields:
| Field | Type | Description |
|---|---|---|
polygon |
string | Vertex string in lat,lng;lat,lng format. See format below.
|
style |
string | Provenance signal: editorial, admin, or derived.
|
source |
string | Human-readable note on origin, e.g. "Freehand trace, geojson.io" or "OSM relation 18547452". |
vertices |
number | Vertex count. |
area_km2 |
number | Computed area in square kilometres. |
Functions
All functions are called via {{#invoke:Boundaries|function}}. Each looks up an entry using the lookup priority described below.
| Function | Returns |
|---|---|
get |
Polygon string. Empty if no entry. |
getStyle |
Style value (editorial, admin, or derived). Empty if no entry.
|
getSource |
Provenance string. |
getMeta |
Formatted summary: Source: X · N vertices · ~Y km². Useful on talk pages.
|
has |
"yes" if entry exists, empty otherwise.
|
listKeys |
Bulleted list of all registered keys, sorted alphabetically. |
Lookup priority
The key used to look up an entry is resolved in this order:
- Explicit positional argument:
{{#invoke:Boundaries|get|Some Name}} - Parent template's
boundary_keyparameter, when invoked from inside a template that exposes one {{PAGENAME}}as fallback
Most page-level usage works without arguments. An infobox calls {{#invoke:Boundaries|get}} and the page name resolves the lookup automatically.
Polygon string format
Polygons are stored as flat strings rather than nested tables for compatibility with SMW Text properties and direct embedding in HTML data- attributes:
lat,lngper vertex, comma-separated;separates vertices within one polygon:separates polygons in a multipolygon- No closing repeat: the rendering layer closes the ring implicitly
Single polygon:
32.07413,77.27155;32.07296,77.27128;...;32.07156,77.27403
Multipolygon (used for entities with disconnected lobes, e.g. The Dooars):
26.57477,89.14644;...;26.56641,89.15261:26.33025,88.72855;...;26.29716,88.73344
Style values
The style field signals provenance and is read by the JS renderer to apply visual styling.
| Style | Meaning |
|---|---|
editorial |
Hand-traced polygon, typically via geojson.io. Default rendering: slate-blue fill, palette-by-neighbour on the multi-polygon home map view. |
admin |
Fetched from OSM administrative relations. Solid grey, thin stroke, minimal fill. |
derived |
Computed by derive_boundaries.py as the morphological union of child entries (e.g. a growing region derived from its growing areas, or a valley derived from its appellations). Rendered identically to editorial.
|
Adding or modifying entries
Editorial entries can be edited directly in this module. Derived entries (regions, valleys) regenerate via the local derive_boundaries.py pipeline:
- Edit
boundaries_config.jsonto add or modify entries. - For editorial polygons, paste the polygon string directly into the local
Module_Boundaries.lua. The script preserves editorial polygons from its input. - Run
python derive_boundaries.py --module Module_Boundaries.lua --config boundaries_config.json --out Module_Boundaries.lua.new --verbose. - Inspect the verbose summary table for sane vertex counts and area_km2.
- Paste
Module_Boundaries.lua.newinto this module on-wiki. - Null-edit affected pages so SMW reindexes the new boundary.
Used by
{{Infobox Growing Region}}{{Infobox Growing Area}}{{Infobox Appellation}}{{Infobox Admin Subdivision}}(whenboundary_keyis set){{Home/ConservationPanel}}(indirectly, via SMWHas boundaryqueries)
Semantic properties
Each infobox that reads from this module also writes the polygon to Has boundary (type Text), enabling tier-specific queries from the home map and other contexts:+|?Has boundary|?Has area name|?Has conservation status
See also
- Property:Has boundary
- MediaWiki:Common.js
- Template:Infobox Growing Area
- Template:Infobox Appellation
-- Module:Boundaries
-- Generated by derive_boundaries.py on 2026-04-30
-- Schema: polygon, style, source, vertices, area_km2
local p = {}
local entries = {
-- REGIONS
["Southern Cambodia"] = {
polygon = "10.59638,104.78567;10.61110,104.78972;10.61820,104.79759;10.62136,104.79976;10.62868,104.80189;10.63685,104.80133;10.63977,104.80188;10.64564,104.80415;10.64874,104.80662;10.65191,104.81135;10.65398,104.81632;10.65680,104.83239;10.65767,104.84384;10.65367,104.85853;10.64924,104.86591;10.64532,104.86956;10.63189,104.87414;10.60497,104.88514;10.60174,104.88578;10.59306,104.88507;10.58629,104.88639;10.58208,104.88603;10.57699,104.88437;10.57344,104.88072;10.57059,104.86617;10.56745,104.85907;10.56205,104.85415;10.54935,104.84967;10.54432,104.84358;10.54224,104.83941;10.54101,104.83286;10.54224,104.82287;10.54418,104.81804;10.54821,104.81330;10.55938,104.80413;10.56256,104.80305;10.57135,104.80301;10.57482,104.80207;10.58084,104.79823;10.58634,104.79135;10.59174,104.78738",
style = "derived",
source = "Derived from 1 children (2026-04-30)",
vertices = 41,
area_km2 = 98.75,
},
["The Dooars"] = {
polygon = "26.58248,89.16273;26.60751,89.15988;26.61530,89.15821;26.63912,89.16490;26.65387,89.16536;26.66927,89.16265;26.69076,89.15351;26.69799,89.15371;26.70480,89.15597;26.70711,89.15833;26.70842,89.16136;26.70856,89.19068;26.71109,89.20195;26.71580,89.21294;26.75164,89.27915;26.75377,89.28440;26.75349,89.28931;26.74938,89.29923;26.74419,89.30837;26.73547,89.32749;26.71781,89.33912;26.70875,89.34764;26.70154,89.35777;26.69646,89.36912;26.69371,89.38125;26.69340,89.39368;26.69518,89.40733;26.69397,89.41077;26.69150,89.41344;26.68402,89.41577;26.64795,89.41979;26.63669,89.42340;26.62032,89.43218;26.60288,89.43500;26.59506,89.43740;26.58777,89.43658;26.57549,89.43253;26.56341,89.42974;26.55144,89.42931;26.53961,89.43114;26.52760,89.43466;26.52123,89.43361;26.50250,89.42804;26.49611,89.42491;26.48647,89.41085;26.48371,89.40438;26.48390,89.39890;26.48997,89.35704;26.49460,89.33519;26.50197,89.31682;26.50429,89.30535;26.50762,89.27507;26.50928,89.26696;26.51597,89.24486;26.51836,89.23938;26.52246,89.23502;26.53985,89.22041;26.55759,89.20715;26.56508,89.19849;26.57089,89.18862;26.57865,89.16618:26.35163,88.74005;26.35637,88.73936;26.36345,88.74090;26.38360,88.75161;26.40014,88.76286;26.40612,88.77058;26.40740,88.77519;26.40707,88.78230;26.40511,88.78961;26.40103,88.79844;26.39808,88.81108;26.39778,88.82405;26.40014,88.83681;26.40507,88.84881;26.41235,88.85956;26.42168,88.86858;26.43266,88.87550;26.44562,88.88129;26.45176,88.88502;26.47153,88.89142;26.48152,88.89739;26.48386,88.89989;26.49117,88.91455;26.49919,88.92455;26.51038,88.93386;26.52046,88.94548;26.53162,88.95375;26.55033,88.96153;26.55398,88.96525;26.55497,88.96860;26.55460,88.97208;26.54463,88.98977;26.53747,89.01268;26.53425,89.02741;26.53488,89.05115;26.52551,89.06482;26.52295,89.06733;26.51962,89.06865;26.50888,89.07057;26.49720,89.07519;26.48385,89.08347;26.47696,89.08535;26.47101,89.08597;26.46520,89.08454;26.45979,89.08208;26.44898,89.07278;26.43772,89.06592;26.42528,89.06156;26.41221,89.05989;26.39709,89.06061;26.39167,89.05772;26.38440,89.05167;26.37296,89.04555;26.36050,89.04189;26.34756,89.04087;26.33469,89.04252;26.32243,89.04677;26.31130,89.05345;26.29519,89.06852;26.28016,89.07155;26.25914,89.07235;26.25012,89.07049;26.23570,89.05705;26.23361,89.05404;26.23243,89.04526;26.23391,89.03433;26.23408,89.01570;26.23518,89.00220;26.23492,88.98900;26.23125,88.97184;26.23134,88.96235;26.23267,88.95387;26.23900,88.93376;26.24003,88.92210;26.23888,88.91044;26.23560,88.89920;26.22544,88.88102;26.22434,88.87623;26.22291,88.86230;26.22283,88.84029;26.22349,88.83678;26.23278,88.82242;26.23908,88.81643;26.25095,88.80593;26.26637,88.79770;26.27582,88.78971;26.28353,88.78002;26.28919,88.76900;26.29276,88.75713;26.29578,88.75314;26.30272,88.75064;26.33455,88.74607",
style = "derived",
source = "Derived from 4 children (2026-04-30)",
vertices = 153,
area_km2 = 1407.28,
},
-- AREAS
["Cardamom Mountains"] = {
polygon = "11.96673,103.40960;11.95380,103.40412;11.94396,103.39411;11.93869,103.38110;11.93880,103.36706;11.94428,103.35413;11.95429,103.34429;11.96730,103.33902;11.98134,103.33914;11.99427,103.34461;12.00411,103.35462;12.00938,103.36764;12.00926,103.38167;12.00379,103.39460;11.99378,103.40444;11.98076,103.40971:11.53827,103.10299;11.56089,103.08609;11.56790,103.07470;11.57027,103.06152;11.56885,103.04870;11.56969,103.03935;11.57440,103.02799;11.58128,103.01999;11.59350,103.01307;11.60743,103.01135;11.62096,103.01510;11.63203,103.02373;11.63718,103.03158;11.64013,103.04050;11.64067,103.04988;11.63855,103.05963;11.63124,103.07161;11.61400,103.08355;11.60499,103.09345;11.60021,103.10595;11.60105,103.12900;11.59910,103.13878;11.59198,103.15088;11.58078,103.15933;11.56719,103.16286;11.55329,103.16091;11.54119,103.15379;11.53273,103.14259;11.52921,103.12900;11.53115,103.11509",
style = "derived",
source = "Derived from 3 accession points (2026-04-30)",
vertices = 46,
area_km2 = 156.51,
},
["Chilapata"] = {
polygon = "26.68237,89.35152;26.67731,89.32700;26.63171,89.34435;26.60262,89.34234;26.56261,89.35420;26.54693,89.34401;26.53418,89.34335;26.51083,89.32925;26.50387,89.33473;26.49860,89.35976;26.49237,89.40333;26.50198,89.41848;26.52740,89.42605;26.54115,89.41321;26.55188,89.41341;26.56618,89.41993;26.59328,89.42897;26.60193,89.42413;26.61773,89.42391;26.62994,89.41570;26.64742,89.40895;26.65869,89.40958;26.68665,89.40641;26.67539,89.37761;26.68102,89.36332",
style = "editorial",
source = "Freehand trace, geojson.io",
vertices = 25,
area_km2 = 155.33,
},
["Jaldapara"] = {
polygon = "26.72907,89.32166;26.73018,89.30296;26.72776,89.29078;26.72083,89.28680;26.69307,89.28197;26.68125,89.26853;26.67093,89.27105;26.64445,89.25697;26.63619,89.24268;26.60555,89.21892;26.54837,89.22501;26.52560,89.24415;26.51694,89.27275;26.51071,89.32934;26.53462,89.34321;26.54705,89.34426;26.56342,89.35413;26.60254,89.34254;26.63205,89.34443;26.64896,89.33810;26.66642,89.33200;26.68988,89.32169;26.71164,89.32987;26.72251,89.32565",
style = "editorial",
source = "Freehand trace, geojson.io",
vertices = 24,
area_km2 = 212.73,
},
["Khairbari-Deogaon"] = {
polygon = "26.69890,89.18216;26.69993,89.16311;26.69226,89.16195;26.67234,89.17287;26.65261,89.17450;26.63224,89.18008;26.61562,89.16683;26.60293,89.17124;26.58610,89.17055;26.57903,89.19728;26.60544,89.21889;26.63682,89.24283;26.64450,89.25723;26.67088,89.27114;26.68063,89.26881;26.69329,89.28204;26.72047,89.28667;26.72772,89.29060;26.73973,89.29871;26.74530,89.28636;26.69807,89.19912",
style = "editorial",
source = "Freehand trace, geojson.io",
vertices = 21,
area_km2 = 118.97,
},
["Kirivong"] = {
polygon = "10.55132,104.82335;10.55063,104.82699;10.54982,104.83109;10.55075,104.83708;10.55467,104.84259;10.56020,104.84329;10.56759,104.84283;10.57439,104.83860;10.58396,104.83790;10.58742,104.83121;10.59654,104.82147;10.60230,104.82006;10.60957,104.81619;10.61360,104.80809;10.60922,104.80141;10.60576,104.79683;10.60115,104.79871;10.59723,104.79448;10.59215,104.79801;10.58904,104.80833;10.57901,104.81056;10.57485,104.81385;10.56793,104.81420;10.56378,104.81185;10.56170,104.81678;10.55582,104.81830:10.63637,104.81019;10.63266,104.81188;10.63052,104.81920;10.62894,104.82965;10.62388,104.83286;10.61733,104.83286;10.61258,104.83608;10.60523,104.83303;10.60128,104.83857;10.60271,104.84669;10.59812,104.84669;10.59575,104.85023;10.59093,104.84903;10.58777,104.84718;10.58223,104.84911;10.57773,104.85675;10.58018,104.86784;10.58192,104.87050;10.58753,104.87001;10.58129,104.87661;10.58548,104.87757;10.59646,104.87283;10.60136,104.87693;10.61503,104.87178;10.62096,104.86881;10.62863,104.86583;10.62792,104.85795;10.63203,104.86117;10.63685,104.86334;10.64135,104.86165;10.64570,104.85457;10.64435,104.85112;10.64894,104.84251;10.64807,104.83793;10.64783,104.83230;10.64277,104.83190;10.64554,104.82933;10.64672,104.82499;10.64427,104.82418;10.64554,104.81936;10.64467,104.81662;10.64182,104.81212",
style = "editorial",
source = "Freehand trace, geojson.io (Bayang Kor mountain range, two cirques)",
vertices = 68,
area_km2 = 47.23,
},
["Malana Valley"] = {
polygon = "32.09845,77.29523;32.10013,77.29665;32.10046,77.29866;32.10191,77.30087;32.10308,77.30334;32.10314,77.30611;32.10475,77.30889;32.10488,77.31162;32.10099,77.31719;32.09969,77.31879;32.09674,77.31888;32.09636,77.31436;32.09927,77.31061;32.09919,77.30829;32.09913,77.30816;32.09802,77.30726;32.09575,77.30703;32.09517,77.30493;32.09532,77.30243;32.09691,77.30140;32.09808,77.29919;32.09903,77.29705;32.09881,77.29612:32.04874,77.20185;32.05199,77.20283;32.05288,77.20706;32.05699,77.21145;32.05938,77.21215;32.06028,77.21702;32.06131,77.21958;32.06228,77.22375;32.06224,77.22604;32.06125,77.22815;32.06140,77.22827;32.06365,77.22858;32.06615,77.23130;32.06747,77.23711;32.07160,77.24463;32.07472,77.24608;32.07894,77.24938;32.08406,77.25032;32.08419,77.25054;32.08779,77.25164;32.09092,77.25397;32.09503,77.25538;32.09788,77.25574;32.10051,77.25594;32.10267,77.25792;32.10489,77.25895;32.10732,77.25816;32.11074,77.25925;32.11416,77.26107;32.11658,77.26373;32.11712,77.26618;32.11685,77.26814;32.11610,77.27020;32.11661,77.27422;32.11761,77.27683;32.11514,77.27769;32.11295,77.27754;32.11154,77.27859;32.11001,77.27875;32.10985,77.27889;32.10995,77.27910;32.11159,77.27980;32.11208,77.28545;32.10870,77.28631;32.10728,77.28714;32.10524,77.28881;32.09761,77.29399;32.09693,77.29231;32.09546,77.29023;32.09372,77.28914;32.09216,77.28803;32.09038,77.28604;32.09031,77.28588;32.08912,77.28480;32.08852,77.28259;32.08667,77.28038;32.08489,77.27917;32.08230,77.27628;32.07855,77.27308;32.07426,77.27156;32.07408,77.27160;32.07164,77.27395;32.07159,77.27410;32.07245,77.27686;32.07306,77.28061;32.07317,77.28312;32.07397,77.28553;32.07387,77.28922;32.07418,77.29328;32.07434,77.29741;32.07499,77.30189;32.07368,77.30671;32.06961,77.30908;32.06557,77.31058;32.06129,77.31024;32.05852,77.30375;32.05557,77.30142;32.05390,77.29248;32.05371,77.29244;32.04809,77.29469;32.04682,77.29195;32.04566,77.28745;32.04414,77.28380;32.04366,77.27895;32.03892,77.27420;32.04336,77.27007;32.04814,77.26717;32.05165,77.26678;32.05531,77.26570;32.05542,77.26561;32.05503,77.26226;32.05290,77.26117;32.05356,77.25824;32.05319,77.25486;32.05177,77.25076;32.05167,77.25065;32.04802,77.24907;32.04721,77.24536;32.04598,77.24398;32.04582,77.24392;32.04569,77.24401;32.04063,77.25272;32.03848,77.24791;32.03487,77.24238;32.03390,77.23737;32.03096,77.23186;32.03048,77.22697;32.03259,77.22184;32.03620,77.21567;32.03815,77.21382;32.04269,77.21000;32.04581,77.20621;32.04780,77.20518",
style = "derived",
source = "Derived from 8 children (2026-04-30)",
vertices = 136,
area_km2 = 41.98,
},
["Mekliganj"] = {
polygon = "26.28165,88.92706;26.28780,88.91829;26.28877,88.89834;26.28405,88.87047;26.27547,88.86661;26.27273,88.86148;26.26873,88.86452;26.26405,88.86140;26.25204,88.86142;26.24526,88.87217;26.23990,88.87215;26.24226,88.87771;26.23352,88.87779;26.23155,88.85865;26.23530,88.85188;26.23148,88.84006;26.23822,88.83806;26.23978,88.82753;26.25010,88.82895;26.24905,88.82332;26.25371,88.82281;26.25593,88.81295;26.26489,88.81212;26.26868,88.81517;26.27710,88.80995;26.28853,88.81321;26.29467,88.81912;26.31006,88.79345;26.30322,88.78267;26.30093,88.76010;26.32126,88.75656;26.33286,88.76132;26.33779,88.75416;26.34300,88.75474;26.35521,88.74800;26.36086,88.74923;26.36812,88.75605;26.37609,88.75737;26.39472,88.76969;26.39868,88.77513;26.39791,88.78396;26.39291,88.78607;26.39253,88.78950;26.38435,88.79150;26.37537,88.80084;26.37934,88.80741;26.37744,88.81986;26.38007,88.83350;26.38685,88.83948;26.38443,88.84480;26.38604,88.85264;26.39404,88.85496;26.39361,88.86781;26.39936,88.86985;26.40426,88.87951;26.40847,88.88163;26.41661,88.88495;26.42556,88.88366;26.42639,88.88717;26.43172,88.88713;26.43289,88.88986;26.43819,88.88728;26.43830,88.89903;26.45208,88.90844;26.45259,88.91441;26.45977,88.91395;26.46063,88.91731;26.46172,88.91269;26.46942,88.91018;26.46580,88.90479;26.46789,88.89930;26.47267,88.90207;26.47140,88.90571;26.47651,88.90448;26.47684,88.90839;26.47089,88.91523;26.47068,88.92631;26.46501,88.92960;26.46551,88.93699;26.47245,88.94038;26.47535,88.94643;26.48534,88.93966;26.49733,88.94341;26.50426,88.94001;26.50586,88.95269;26.52494,88.96217;26.52481,88.96718;26.53129,88.97056;26.53871,88.96757;26.54649,88.96922;26.53544,88.98562;26.52904,89.01011;26.51825,89.02740;26.51681,89.03575;26.52662,89.04879;26.51317,89.04822;26.50418,89.06277;26.48240,89.05917;26.48121,89.07517;26.47161,89.07732;26.46358,89.07432;26.46354,89.06741;26.47030,89.06947;26.46907,89.06359;26.45617,89.05123;26.44303,89.05028;26.43987,89.03934;26.43357,89.03788;26.43034,89.03239;26.42681,89.03179;26.42077,89.03852;26.41805,89.04788;26.41132,89.04561;26.39884,89.05215;26.40037,89.03940;26.39524,89.03733;26.39554,89.03347;26.40701,89.02982;26.40781,89.02398;26.40457,89.01930;26.40827,89.02324;26.41353,89.02244;26.41280,89.00715;26.42188,89.00423;26.42077,88.99567;26.42369,88.99372;26.42052,88.99287;26.41373,88.99849;26.41288,88.99374;26.41678,88.99412;26.42002,88.98309;26.42447,88.98356;26.42528,88.98077;26.43097,88.98292;26.43287,88.97881;26.43606,88.97896;26.43890,88.98313;26.44324,88.98079;26.44655,88.98320;26.44624,88.97844;26.44939,88.97928;26.44631,88.97649;26.45013,88.97497;26.45132,88.96575;26.45766,88.96551;26.45914,88.95728;26.45183,88.95979;26.45056,88.96507;26.44817,88.96139;26.45208,88.95112;26.44845,88.95180;26.44798,88.94613;26.44185,88.94955;26.43877,88.94744;26.43389,88.95202;26.43089,88.94484;26.42492,88.94507;26.42467,88.93814;26.43075,88.93467;26.43068,88.92608;26.42771,88.92581;26.42590,88.93465;26.42437,88.92519;26.42053,88.92564;26.41948,88.92181;26.41506,88.92969;26.40751,88.92728;26.40867,88.90472;26.40060,88.91000;26.40283,88.91006;26.40325,88.91724;26.40035,88.91818;26.38417,88.91652;26.38019,88.90893;26.37858,88.92064;26.37468,88.91982;26.37431,88.91323;26.37042,88.91095;26.36611,88.91204;26.36417,88.92176;26.35891,88.91905;26.36458,88.92671;26.35671,88.93499;26.35574,88.94761;26.36449,88.94940;26.36549,88.95261;26.35640,88.95845;26.35438,88.95082;26.34402,88.94611;26.34313,88.95181;26.34630,88.95287;26.34357,88.95895;26.34121,88.95579;26.34297,88.95283;26.33168,88.95229;26.33001,88.95981;26.33547,88.95940;26.33570,88.96288;26.34565,88.96285;26.34800,88.95914;26.35196,88.96111;26.34835,88.96484;26.35140,88.96653;26.35072,88.97178;26.34654,88.97802;26.34997,88.98510;26.33744,88.98920;26.34108,88.98179;26.33181,88.98623;26.33463,88.98977;26.32983,89.00088;26.32056,88.99588;26.32229,88.99143;26.31308,88.99588;26.31796,88.98481;26.30884,88.98239;26.30067,88.98481;26.30020,88.99214;26.29626,88.99417;26.29949,88.99696;26.29197,88.99545;26.29078,88.99998;26.30476,89.00690;26.29807,89.01275;26.29206,89.01320;26.29027,89.01833;26.29551,89.02006;26.30038,89.01421;26.30930,89.02151;26.30550,89.02653;26.29766,89.02112;26.29370,89.02314;26.28938,89.02006;26.28796,89.02461;26.28258,89.02750;26.28549,89.04072;26.28260,89.03739;26.28125,89.04023;26.27663,89.03980;26.27522,89.04505;26.28012,89.04308;26.28001,89.04813;26.28874,89.04985;26.28264,89.04677;26.28423,89.04463;26.28951,89.04631;26.28970,89.04277;26.29559,89.04572;26.29613,89.05230;26.29207,89.05298;26.29426,89.05695;26.29160,89.06070;26.28565,89.05747;26.27983,89.06292;26.27710,89.05394;26.27614,89.06003;26.27128,89.06277;26.26085,89.06376;26.25687,89.06009;26.25360,89.06256;26.25728,89.05567;26.25602,89.05203;26.24587,89.04796;26.24155,89.05071;26.24105,89.04553;26.24554,89.03781;26.24238,89.03700;26.24297,89.03398;26.24667,89.03305;26.24770,89.02746;26.24415,89.02745;26.24517,89.02078;26.24278,89.01995;26.24540,88.98773;26.23994,88.97147;26.24054,88.95857;26.24206,88.95325",
style = "admin",
source = "OSM admin union (R10360854, R10360855), 2026-04-30",
vertices = 277,
area_km2 = 452.89,
},
["Parvati Valley"] = {
polygon = "32.02926,77.42118;32.03130,77.42127;32.03464,77.42194;32.03658,77.42393;32.03814,77.42709;32.03848,77.43223;32.03856,77.43642;32.03763,77.44092;32.03563,77.44310;32.03401,77.44465;32.03398,77.44488;32.03409,77.44496;32.03422,77.44494;32.03849,77.44259;32.04500,77.44254;32.04777,77.44795;32.04838,77.45198;32.04598,77.46438;32.04557,77.46812;32.04457,77.47356;32.04458,77.47813;32.04329,77.48026;32.04192,77.48371;32.03984,77.48282;32.03825,77.48253;32.03722,77.48219;32.03588,77.48081;32.03433,77.47962;32.03260,77.47622;32.03046,77.47499;32.02842,77.47405;32.02637,77.47295;32.02436,77.47085;32.02420,77.47079;32.02291,77.46835;32.02242,77.46621;32.02108,77.46384;32.01854,77.46170;32.01814,77.45940;32.01712,77.45794;32.01537,77.45655;32.01337,77.45518;32.01116,77.45474;32.00986,77.45320;32.00785,77.45261;32.00636,77.45297;32.00433,77.45237;32.00216,77.45283;32.00042,77.45186;32.00028,77.45185;32.00015,77.45204;32.00059,77.45536;32.00342,77.45667;32.00540,77.45922;32.00666,77.46015;32.00736,77.46188;32.00886,77.46337;32.01291,77.46648;32.01458,77.46702;32.01518,77.47019;32.01644,77.47295;32.01717,77.47884;32.01708,77.48054;32.01227,77.48607;32.00988,77.48445;32.00823,77.48368;32.00699,77.48353;32.00681,77.48085;32.00605,77.48021;32.00365,77.48031;32.00426,77.47679;32.00417,77.47494;32.00293,77.47189;32.00246,77.47041;32.00270,77.46852;32.00239,77.46675;32.00159,77.46491;32.00183,77.46260;32.00179,77.46247;32.00163,77.46241;31.99802,77.46288;31.99703,77.46424;31.99255,77.46449;31.98837,77.45975;31.98750,77.45409;31.98606,77.45292;31.98548,77.45032;31.98844,77.44750;31.98929,77.44269;31.98905,77.43321;31.98661,77.43156;31.98654,77.42832;31.98823,77.42694;31.99142,77.42731;31.99377,77.42891;31.99525,77.42844;31.99653,77.42908;31.99726,77.43184;31.99749,77.43250;31.99784,77.43288;31.99797,77.43291;31.99811,77.43280;32.00000,77.42835;32.00001,77.42615;32.00379,77.42672;32.00501,77.42591;32.00616,77.42647;32.00839,77.42704;32.01042,77.42664;32.01169,77.42582;32.01314,77.42657;32.01437,77.42562;32.01813,77.42501;32.02114,77.42362;32.02580,77.42219;32.02737,77.42212:32.02885,77.26939;32.03341,77.27048;32.03473,77.27303;32.03847,77.27383;32.03894,77.27418;32.04372,77.27895;32.04416,77.28383;32.04573,77.28760;32.04686,77.29204;32.04805,77.29456;32.04828,77.29465;32.05390,77.29236;32.05557,77.30148;32.05849,77.30371;32.06009,77.30740;32.05912,77.31345;32.05872,77.31465;32.05694,77.31575;32.05635,77.31835;32.05332,77.32064;32.05219,77.32285;32.04980,77.32459;32.04833,77.32579;32.04725,77.32745;32.04599,77.32766;32.04618,77.32984;32.04633,77.32991;32.05362,77.32962;32.05788,77.32527;32.06224,77.32384;32.06731,77.32643;32.07074,77.33225;32.07497,77.33667;32.07154,77.34597;32.07057,77.35055;32.07157,77.35458;32.07358,77.35807;32.07354,77.36291;32.07438,77.36787;32.06929,77.37501;32.06478,77.37513;32.06079,77.37590;32.05592,77.37914;32.05309,77.37912;32.05074,77.37899;32.04740,77.37693;32.04666,77.37468;32.04656,77.37457;32.04639,77.37458;32.04083,77.38707;32.03857,77.38712;32.03407,77.38370;32.03248,77.38129;32.03046,77.37898;32.02638,77.37659;32.02492,77.37446;32.02254,77.37229;32.02018,77.36961;32.01825,77.36794;32.02012,77.36687;32.02033,77.36421;32.02089,77.36125;32.02203,77.36024;32.02492,77.35615;32.02810,77.35280;32.02981,77.35168;32.03071,77.35081;32.03065,77.35062;32.02965,77.34987;32.02938,77.34897;32.02953,77.34808;32.03088,77.34429;32.03177,77.34350;32.03179,77.34330;32.03161,77.34321;32.02735,77.34364;32.02539,77.34113;32.02790,77.33677;32.03070,77.33141;32.03057,77.32924;32.03066,77.32727;32.03160,77.32662;32.03168,77.32649;32.03150,77.32479;32.03076,77.32232;32.02961,77.32146;32.02863,77.32026;32.02925,77.31884;32.03051,77.31780;32.03212,77.31693;32.03477,77.31527;32.03593,77.31297;32.03626,77.31149;32.03578,77.30975;32.03554,77.30975;32.03505,77.31040;32.03392,77.31002;32.03330,77.30900;32.03318,77.30892;32.03103,77.30897;32.02971,77.31065;32.02857,77.30979;32.02610,77.30953;32.03090,77.30694;32.03243,77.30449;32.03230,77.30428;32.02977,77.30361;32.02869,77.30154;32.02626,77.30210;32.02554,77.30052;32.02678,77.29947;32.02909,77.29454;32.02912,77.29314;32.02962,77.29178;32.02984,77.28921;32.02917,77.28774;32.02959,77.28686;32.02950,77.28675;32.02936,77.28674;32.02868,77.28717;32.02727,77.28841;32.02570,77.28951;32.02473,77.29145;32.02330,77.29209;32.02097,77.29054;32.01979,77.28498;32.01886,77.28372;32.01861,77.28176;32.01850,77.27962;32.01726,77.27740;32.01960,77.27600;32.02133,77.27540;32.02398,77.27243:32.00545,77.36108;32.00694,77.36337;32.00603,77.36633;32.00613,77.36646;32.00793,77.36718;32.00884,77.36988;32.00939,77.37115;32.00959,77.37350;32.01015,77.37543;32.01020,77.37587;32.00986,77.37619;32.01005,77.37700;32.00993,77.37802;32.00943,77.37893;32.00882,77.38098;32.00803,77.38214;32.00765,77.38407;32.00656,77.38546;32.00448,77.38628;32.00311,77.38610;32.00141,77.38524;32.00022,77.38451;31.99953,77.38278;31.99943,77.38268;31.99840,77.38228;31.99750,77.38263;31.99642,77.38257;31.99569,77.38176;31.99419,77.38133;31.99380,77.38055;31.99290,77.38028;31.99039,77.37838;31.98913,77.37826;31.98832,77.37778;31.98671,77.37715;31.98617,77.37356;31.98640,77.37107;31.98768,77.36900;31.98957,77.36668;31.99227,77.36459;31.99425,77.36487;31.99559,77.36579;31.99573,77.36582;31.99588,77.36564;31.99578,77.36320;31.99842,77.36118;32.00259,77.36088:31.97936,77.33127;31.98105,77.33272;31.98283,77.33459;31.98420,77.33486;31.98432,77.33654;31.98585,77.33836;31.98484,77.33973;31.98551,77.34194;31.98548,77.34392;31.98459,77.34536;31.98572,77.34867;31.98684,77.35129;31.98540,77.35350;31.98363,77.35456;31.98057,77.36051;31.97607,77.36688;31.97511,77.36308;31.97275,77.35793;31.97204,77.35598;31.97203,77.35460;31.97140,77.35361;31.97125,77.35353;31.97109,77.35361;31.96694,77.36027;31.96501,77.36722;31.96123,77.36706;31.96237,77.36397;31.96347,77.36024;31.96216,77.35341;31.96418,77.35109;31.96451,77.34877;31.96627,77.34719;31.96771,77.34544;31.96996,77.34352;31.97135,77.34260;31.97166,77.34100;31.97241,77.33979;31.97336,77.33912;31.97424,77.33884;31.97468,77.33810;31.97509,77.33650;31.97610,77.33572;31.97605,77.33429;31.97824,77.33200",
style = "derived",
source = "Derived from 17 children (2026-04-30)",
vertices = 340,
area_km2 = 74.83,
},
-- APPELLATIONS
["Atolang (appellation)"] = {
polygon = "32.11617,77.27033;32.11438,77.26956;32.10997,77.26803;32.10753,77.26815;32.10530,77.26927;32.10354,77.27030;32.10170,77.27036;32.10034,77.27158;32.09882,77.27199;32.09722,77.27180;32.09530,77.27212;32.09443,77.27414;32.09289,77.27513;32.09142,77.27657;32.08987,77.27843;32.08659,77.28028;32.08852,77.28259;32.08912,77.28480;32.09042,77.28598;32.09438,77.28502;32.09636,77.28480;32.09785,77.28352;32.09928,77.28352;32.10050,77.28272;32.10346,77.28032;32.10397,77.27888;32.10560,77.27721;32.10723,77.27715;32.10845,77.27849;32.10948,77.27881;32.11154,77.27859;32.11295,77.27753;32.11514,77.27769;32.11761,77.27683;32.11661,77.27424",
style = "editorial",
source = "Freehand trace, geojson.io",
vertices = 35,
area_km2 = 2.91,
},
["Bareonah (appellation)"] = {
polygon = "32.03216,77.34317;32.03088,77.34429;32.03023,77.34602;32.02952,77.34808;32.02938,77.34898;32.02965,77.34987;32.03080,77.35074;32.03325,77.35133;32.03419,77.35124;32.03571,77.35206;32.03761,77.35222;32.03961,77.35257;32.04085,77.35277;32.04167,77.35233;32.04288,77.35281;32.04400,77.35378;32.04502,77.35439;32.04711,77.35644;32.04864,77.35684;32.04964,77.35869;32.05083,77.35971;32.05066,77.36217;32.04929,77.36475;32.04887,77.36883;32.04748,77.37188;32.04650,77.37420;32.04740,77.37693;32.05074,77.37899;32.05309,77.37912;32.05592,77.37914;32.06079,77.37590;32.06476,77.37513;32.06929,77.37501;32.07277,77.37020;32.07439,77.36786;32.07354,77.36290;32.07358,77.35807;32.07158,77.35461;32.07056,77.35055;32.07154,77.34598;32.07497,77.33667;32.07075,77.33227;32.06731,77.32643;32.06224,77.32384;32.05788,77.32527;32.05363,77.32964;32.05012,77.32975;32.04618,77.32991;32.04487,77.33334;32.04382,77.33721;32.04001,77.33756;32.03689,77.34039;32.03442,77.34194",
style = "editorial",
source = "Freehand, geojson.io",
vertices = 53,
area_km2 = 15.22,
},
["Barshaini (appellation)"] = {
polygon = "32.01437,77.42562;32.01314,77.42660;32.01169,77.42582;32.01042,77.42664;32.00839,77.42704;32.00614,77.42646;32.00501,77.42590;32.00382,77.42673;32.00001,77.42615;32.00001,77.42835;31.99798,77.43311;31.99934,77.43976;31.99842,77.44353;31.99855,77.44907;31.99872,77.45091;32.00216,77.45283;32.00431,77.45236;32.00636,77.45297;32.00777,77.45262;32.00743,77.45032;32.00795,77.44795;32.00773,77.44522;32.00943,77.43920;32.01002,77.43623;32.01102,77.43446;32.01106,77.43280;32.01222,77.43168;32.01336,77.42827;32.01385,77.42708",
style = "editorial",
source = "Freehand, geojson.io",
vertices = 29,
area_km2 = 2.99,
},
["Bhelang Sharn (appellation)"] = {
polygon = "32.05865,77.22979;32.06121,77.22812;32.06224,77.22604;32.06228,77.22376;32.06131,77.21957;32.06028,77.21704;32.05938,77.21215;32.05700,77.21146;32.05285,77.20702;32.05199,77.20283;32.04874,77.20185;32.04781,77.20519;32.04581,77.20621;32.04270,77.20999;32.04080,77.21154;32.03815,77.21382;32.03621,77.21566;32.03259,77.22185;32.03048,77.22698;32.03096,77.23187;32.03390,77.23737;32.03487,77.24238;32.03849,77.24792;32.04063,77.25272;32.04581,77.24380;32.04723,77.24535;32.04816,77.24300;32.05037,77.23645;32.05349,77.23269;32.05827,77.23220;32.05850,77.23108",
style = "editorial",
source = "Freehand trace, geojson.io (provisional name from single field pin)",
vertices = 31,
area_km2 = 9.14,
},
["Gargi (appellation)"] = {
polygon = "32.04594,77.32769;32.04303,77.32608;32.04176,77.32606;32.03891,77.32758;32.03670,77.32750;32.03510,77.32756;32.03362,77.32737;32.03171,77.32654;32.03066,77.32727;32.03057,77.32925;32.03073,77.33137;32.02790,77.33677;32.02539,77.34113;32.02735,77.34364;32.03206,77.34316;32.03470,77.34180;32.03687,77.34040;32.03999,77.33757;32.04380,77.33720;32.04485,77.33335;32.04616,77.32992",
style = "editorial",
source = "Freehand, geojson.io",
vertices = 21,
area_km2 = 2.31,
},
["Gohar (appellation)"] = {
polygon = "32.04815,77.29470;32.04481,77.29690;32.04144,77.29697;32.04054,77.29784;32.04121,77.30051;32.04161,77.30174;32.04123,77.30235;32.03892,77.30250;32.03853,77.30339;32.03796,77.30360;32.03779,77.30485;32.03664,77.30540;32.03574,77.30949;32.03627,77.31144;32.03594,77.31295;32.03477,77.31529;32.03211,77.31693;32.03052,77.31780;32.02925,77.31884;32.02862,77.32027;32.02962,77.32147;32.03075,77.32230;32.03151,77.32481;32.03169,77.32654;32.03359,77.32737;32.03508,77.32755;32.03666,77.32751;32.03889,77.32758;32.04042,77.32684;32.04172,77.32608;32.04305,77.32608;32.04587,77.32762;32.04725,77.32745;32.04830,77.32581;32.04979,77.32460;32.05219,77.32286;32.05332,77.32063;32.05635,77.31835;32.05693,77.31574;32.05872,77.31465;32.05911,77.31346;32.05950,77.31086;32.06009,77.30740;32.05849,77.30371;32.05557,77.30151;32.05391,77.29236;32.05066,77.29365",
style = "editorial",
source = "Freehand, geojson.io",
vertices = 47,
area_km2 = 6.88,
},
["Grahan (appellation)"] = {
polygon = "31.97474,77.33800;31.97422,77.33887;31.97336,77.33912;31.97242,77.33979;31.97166,77.34100;31.97139,77.34258;31.96996,77.34352;31.96770,77.34545;31.97026,77.34841;31.97051,77.34957;31.97116,77.35155;31.97122,77.35333;31.97204,77.35462;31.97204,77.35598;31.97275,77.35793;31.97399,77.36070;31.97512,77.36310;31.97607,77.36688;31.98058,77.36050;31.98362,77.35459;31.98286,77.35289;31.98177,77.35185;31.98032,77.34982",
style = "editorial",
source = "Freehand, geojson.io",
vertices = 23,
area_km2 = 2.19,
},
["Katagla (appellation)"] = {
polygon = "32.03471,77.27301;32.03341,77.27048;32.02885,77.26939;32.02397,77.27244;32.02132,77.27542;32.01960,77.27599;32.01726,77.27740;32.01850,77.27961;32.01861,77.28176;32.01886,77.28372;32.01978,77.28494;32.02096,77.29054;32.02329,77.29209;32.02473,77.29145;32.02569,77.28951;32.02728,77.28841;32.02867,77.28717;32.02994,77.28637;32.03245,77.28465;32.03310,77.28249;32.03388,77.28157;32.03443,77.27947;32.03457,77.27537",
style = "editorial",
source = "Freehand, geojson.io",
vertices = 23,
area_km2 = 2.60,
},
["Lapas (appellation)"] = {
polygon = "32.02662,77.35438;32.02491,77.35616;32.02310,77.35879;32.02202,77.36026;32.02089,77.36125;32.02033,77.36421;32.02013,77.36690;32.01825,77.36794;32.02019,77.36962;32.02156,77.37113;32.02254,77.37229;32.02494,77.37448;32.02638,77.37659;32.03044,77.37896;32.03249,77.38130;32.03407,77.38369;32.03856,77.38712;32.04084,77.38707;32.04652,77.37420;32.04891,77.36884;32.04932,77.36486;32.05068,77.36220;32.05087,77.35973;32.04968,77.35871;32.04868,77.35688;32.04713,77.35642;32.04512,77.35443;32.04403,77.35380;32.04290,77.35279;32.04170,77.35233;32.04088,77.35279;32.03766,77.35220;32.03575,77.35205;32.03420,77.35123;32.03324,77.35131;32.03083,77.35074;32.02983,77.35168;32.02811,77.35280",
style = "editorial",
source = "Freehand, geojson.io",
vertices = 38,
area_km2 = 7.65,
},
["Liagi (appellation)"] = {
polygon = "32.01015,77.37544;32.00960,77.37352;32.00939,77.37115;32.00885,77.36989;32.00793,77.36717;32.00598,77.36639;32.00694,77.36337;32.00545,77.36108;32.00260,77.36087;31.99842,77.36118;31.99578,77.36320;31.99589,77.36598;31.99608,77.36668;31.99676,77.36871;31.99830,77.36927;32.00009,77.37028;32.00162,77.37080;32.00267,77.37188;32.00392,77.37267;32.00541,77.37318;32.00677,77.37408;32.00784,77.37454;32.00847,77.37512;32.00856,77.37580;32.00914,77.37638;32.00985,77.37613;32.01020,77.37587",
style = "editorial",
source = "Freehand, geojson.io",
vertices = 27,
area_km2 = 1.28,
},
["Malana (appellation)"] = {
polygon = "32.08407,77.25033;32.07894,77.24939;32.07471,77.24607;32.07161,77.24465;32.06992,77.24158;32.06746,77.23708;32.06615,77.23130;32.06365,77.22858;32.06109,77.22823;32.05854,77.22987;32.05829,77.23224;32.05346,77.23275;32.05039,77.23642;32.04823,77.24294;32.04722,77.24538;32.04801,77.24907;32.05175,77.25068;32.05319,77.25488;32.05357,77.25827;32.05290,77.26117;32.05504,77.26223;32.05546,77.26569;32.05701,77.26688;32.05942,77.26496;32.06094,77.26600;32.06120,77.26704;32.06231,77.26693;32.06394,77.26771;32.06570,77.26754;32.06783,77.26946;32.06948,77.27031;32.07177,77.27077;32.07416,77.27152;32.07854,77.27307;32.07812,77.26983;32.07745,77.26723;32.07809,77.26320;32.08214,77.25545;32.08326,77.25280",
style = "editorial",
source = "Freehand, geojson.io (refined April 2026)",
vertices = 39,
area_km2 = 9.47,
},
["Mejigh (appellation)"] = {
polygon = "32.08218,77.27622;32.08402,77.27473;32.08562,77.27198;32.08755,77.26977;32.08890,77.26742;32.08911,77.26485;32.09052,77.26369;32.09132,77.26141;32.09264,77.25457;32.09089,77.25396;32.08780,77.25164;32.08412,77.25052;32.08215,77.25562;32.07814,77.26319;32.07746,77.26728;32.07810,77.26974;32.07850,77.27303",
style = "editorial",
source = "Freehand, geojson.io (refined April 2026)",
vertices = 17,
area_km2 = 2.41,
},
["Nakthan (appellation)"] = {
polygon = "32.00068,77.45542;32.00105,77.45653;32.00130,77.45743;32.00186,77.46238;32.00159,77.46491;32.00240,77.46677;32.00271,77.46855;32.00245,77.47041;32.00293,77.47189;32.00339,77.47307;32.00416,77.47491;32.00426,77.47677;32.00365,77.48031;32.00599,77.48017;32.00681,77.48081;32.00699,77.48353;32.00823,77.48368;32.00990,77.48446;32.01227,77.48607;32.01708,77.48055;32.01717,77.47885;32.01678,77.47592;32.01644,77.47295;32.01518,77.47022;32.01458,77.46702;32.01291,77.46649;32.00885,77.46336;32.00736,77.46188;32.00666,77.46015;32.00542,77.45924;32.00342,77.45667",
style = "editorial",
source = "Freehand, geojson.io",
vertices = 31,
area_km2 = 2.86,
},
["Nirang (appellation)"] = {
polygon = "32.07413,77.27155;32.07296,77.27128;32.07163,77.27074;32.06942,77.27033;32.06803,77.26956;32.06563,77.26754;32.06394,77.26772;32.06224,77.26692;32.06122,77.26702;32.06092,77.26602;32.05942,77.26500;32.05694,77.26687;32.05542,77.26567;32.05163,77.26678;32.04815,77.26716;32.04337,77.27006;32.03892,77.27420;32.04367,77.27895;32.04414,77.28380;32.04566,77.28744;32.04682,77.29194;32.04809,77.29469;32.05391,77.29236;32.05557,77.30142;32.05852,77.30373;32.06129,77.31024;32.06557,77.31058;32.06960,77.30908;32.07368,77.30671;32.07499,77.30188;32.07434,77.29742;32.07418,77.29328;32.07387,77.28921;32.07397,77.28553;32.07316,77.28310;32.07306,77.28062;32.07245,77.27685;32.07156,77.27403",
style = "editorial",
source = "Freehand trace, geojson.io (redrawn 2026-04-29)",
vertices = 38,
area_km2 = 10.87,
},
["Pulga (appellation)"] = {
polygon = "31.99799,77.43305;31.99751,77.43253;31.99726,77.43185;31.99653,77.42908;31.99524,77.42843;31.99378,77.42893;31.99142,77.42731;31.98823,77.42694;31.98654,77.42832;31.98661,77.43156;31.98906,77.43315;31.98929,77.44271;31.98844,77.44752;31.98548,77.45032;31.98606,77.45292;31.98750,77.45405;31.98837,77.45975;31.99255,77.46449;31.99703,77.46424;31.99797,77.46288;32.00184,77.46238;32.00127,77.45740;32.00059,77.45551;32.00010,77.45165;31.99874,77.45087;31.99859,77.44903;31.99847,77.44355;31.99939,77.43977",
style = "editorial",
source = "Freehand, geojson.io",
vertices = 28,
area_km2 = 4.14,
},
["Pulgi (appellation)"] = {
polygon = "31.96772,77.34543;31.96628,77.34718;31.96451,77.34877;31.96419,77.35107;31.96216,77.35341;31.96348,77.36024;31.96237,77.36398;31.96123,77.36706;31.96501,77.36722;31.96693,77.36029;31.97126,77.35335;31.97117,77.35154;31.97053,77.34962;31.97026,77.34838",
style = "editorial",
source = "Freehand, geojson.io",
vertices = 14,
area_km2 = 1.16,
},
["Rasol (appellation)"] = {
polygon = "32.03893,77.27417;32.03846,77.27382;32.03725,77.27356;32.03468,77.27304;32.03448,77.27699;32.03441,77.27951;32.03386,77.28161;32.03308,77.28248;32.03243,77.28466;32.02992,77.28639;32.02917,77.28774;32.02985,77.28916;32.02962,77.29181;32.02912,77.29314;32.02909,77.29454;32.02676,77.29951;32.02554,77.30052;32.02626,77.30210;32.02873,77.30151;32.02977,77.30361;32.03251,77.30434;32.03413,77.30317;32.03562,77.30168;32.03751,77.29993;32.03893,77.29822;32.04044,77.29785;32.04132,77.29706;32.04292,77.29689;32.04477,77.29689;32.04812,77.29470;32.04686,77.29202;32.04573,77.28759;32.04415,77.28383;32.04372,77.27895",
style = "editorial",
source = "Freehand, geojson.io",
vertices = 34,
area_km2 = 3.85,
},
["Rengrang Chin (appellation)"] = {
polygon = "32.09269,77.25453;32.09245,77.25586;32.09139,77.26127;32.09060,77.26365;32.08917,77.26486;32.08903,77.26728;32.08760,77.26974;32.08572,77.27184;32.08418,77.27462;32.08223,77.27620;32.08490,77.27918;32.08665,77.28037;32.08790,77.27948;32.08986,77.27841;32.09142,77.27656;32.09279,77.27523;32.09436,77.27418;32.09529,77.27216;32.09717,77.27180;32.09874,77.27196;32.10028,77.27160;32.10161,77.27043;32.10356,77.27030;32.10530,77.26926;32.10749,77.26825;32.10998,77.26801;32.11330,77.26922;32.11606,77.27026;32.11685,77.26813;32.11712,77.26619;32.11658,77.26373;32.11415,77.26107;32.11073,77.25925;32.10732,77.25816;32.10492,77.25897;32.10267,77.25792;32.10052,77.25594;32.09788,77.25574;32.09501,77.25538",
style = "editorial",
source = "Freehand, geojson.io (redrawn April 2026)",
vertices = 39,
area_km2 = 4.17,
},
["Shilha (appellation)"] = {
polygon = "32.00983,77.37614;32.00913,77.37639;32.00854,77.37578;32.00846,77.37512;32.00785,77.37454;32.00677,77.37408;32.00545,77.37321;32.00389,77.37266;32.00267,77.37187;32.00162,77.37080;32.00007,77.37028;31.99829,77.36927;31.99675,77.36869;31.99583,77.36596;31.99425,77.36486;31.99228,77.36459;31.98956,77.36668;31.98769,77.36899;31.98640,77.37107;31.98617,77.37357;31.98644,77.37545;31.98671,77.37715;31.98834,77.37779;31.98913,77.37826;31.99038,77.37837;31.99290,77.38029;31.99381,77.38053;31.99419,77.38133;31.99571,77.38176;31.99642,77.38257;31.99750,77.38263;31.99840,77.38227;31.99951,77.38271;32.00022,77.38450;32.00140,77.38524;32.00312,77.38611;32.00448,77.38628;32.00656,77.38546;32.00765,77.38407;32.00803,77.38214;32.00883,77.38098;32.00944,77.37892;32.00993,77.37802;32.01005,77.37699",
style = "editorial",
source = "Freehand, geojson.io",
vertices = 44,
area_km2 = 3.04,
},
["Thal (appellation)"] = {
polygon = "32.09845,77.29523;32.09881,77.29611;32.09906,77.29699;32.09808,77.29918;32.09690,77.30142;32.09532,77.30242;32.09517,77.30493;32.09575,77.30703;32.09804,77.30726;32.09919,77.30821;32.09929,77.31058;32.09636,77.31436;32.09674,77.31888;32.09969,77.31879;32.10099,77.31719;32.10488,77.31162;32.10475,77.30889;32.10314,77.30613;32.10308,77.30335;32.10191,77.30086;32.10046,77.29866;32.10013,77.29665",
style = "editorial",
source = "Freehand trace, geojson.io",
vertices = 22,
area_km2 = 1.27,
},
["Thunja (appellation)"] = {
polygon = "31.97937,77.33127;31.97824,77.33200;31.97605,77.33429;31.97613,77.33571;31.97509,77.33650;31.97469,77.33801;31.98025,77.34966;31.98185,77.35189;31.98284,77.35287;31.98358,77.35457;31.98540,77.35350;31.98684,77.35129;31.98572,77.34868;31.98457,77.34531;31.98548,77.34393;31.98551,77.34194;31.98481,77.33974;31.98585,77.33836;31.98430,77.33653;31.98420,77.33486;31.98284,77.33461;31.98105,77.33272",
style = "editorial",
source = "Freehand, geojson.io",
vertices = 22,
area_km2 = 1.61,
},
["Tosh (appellation)"] = {
polygon = "32.02433,77.42265;32.02114,77.42363;32.01815,77.42500;32.01438,77.42565;32.01347,77.42801;32.01218,77.43168;32.01101,77.43281;32.01096,77.43450;32.01000,77.43634;32.00940,77.43928;32.00849,77.44231;32.00766,77.44522;32.00792,77.44797;32.00737,77.45030;32.00771,77.45257;32.00992,77.45321;32.01116,77.45474;32.01337,77.45517;32.01537,77.45655;32.01714,77.45796;32.01815,77.45940;32.01854,77.46170;32.02108,77.46384;32.02243,77.46623;32.02290,77.46834;32.02420,77.47079;32.02633,77.46883;32.02719,77.46638;32.02685,77.46430;32.02498,77.46225;32.02441,77.45778;32.02804,77.44920;32.03285,77.44577;32.03563,77.44311;32.03762,77.44093;32.03856,77.43643;32.03848,77.43223;32.03814,77.42709;32.03659,77.42393;32.03464,77.42194;32.03129,77.42127;32.02926,77.42118;32.02737,77.42212;32.02581,77.42219",
style = "editorial",
source = "Freehand, geojson.io",
vertices = 44,
area_km2 = 9.17,
},
["Tosh Kutla (appellation)"] = {
polygon = "32.02807,77.44910;32.02763,77.45019;32.02763,77.45023;32.02443,77.45762;32.02497,77.46213;32.02691,77.46428;32.02723,77.46638;32.02649,77.46872;32.02424,77.47072;32.02637,77.47295;32.02842,77.47405;32.03046,77.47499;32.03262,77.47623;32.03433,77.47962;32.03587,77.48080;32.03722,77.48219;32.03824,77.48253;32.03982,77.48282;32.04192,77.48371;32.04329,77.48024;32.04458,77.47813;32.04457,77.47358;32.04557,77.46811;32.04597,77.46439;32.04838,77.45198;32.04777,77.44795;32.04500,77.44254;32.03849,77.44259;32.03291,77.44567",
style = "editorial",
source = "Freehand, geojson.io",
vertices = 29,
area_km2 = 7.25,
},
["Vairam (appellation)"] = {
polygon = "32.03896,77.29820;32.03753,77.29991;32.03570,77.30162;32.03413,77.30318;32.03254,77.30434;32.03092,77.30694;32.02609,77.30953;32.02859,77.30978;32.02972,77.31065;32.03104,77.30895;32.03325,77.30891;32.03392,77.31002;32.03506,77.31040;32.03573,77.30948;32.03664,77.30540;32.03778,77.30485;32.03795,77.30360;32.03853,77.30341;32.03892,77.30249;32.04125,77.30236;32.04161,77.30176;32.04120,77.30068;32.04047,77.29784;32.03961,77.29807;32.03938,77.29812",
style = "editorial",
source = "Freehand, geojson.io",
vertices = 25,
area_km2 = 0.63,
},
["Waichin (appellation)"] = {
polygon = "32.09037,77.28603;32.09215,77.28802;32.09372,77.28914;32.09546,77.29023;32.09694,77.29233;32.09761,77.29399;32.10181,77.29110;32.10524,77.28881;32.10727,77.28715;32.10868,77.28632;32.11208,77.28545;32.11159,77.27980;32.10856,77.27850;32.10718,77.27720;32.10552,77.27730;32.10396,77.27893;32.10350,77.28031;32.10202,77.28139;32.10040,77.28284;32.09914,77.28353;32.09782,77.28357;32.09629,77.28487;32.09448,77.28498;32.09212,77.28552",
style = "editorial",
source = "Freehand trace, geojson.io",
vertices = 24,
area_km2 = 1.69,
},
}
local function getKey(frame)
local args = frame.args
if args[1] and args[1] ~= "" then return args[1] end
local pframe = frame:getParent()
if pframe and pframe.args and pframe.args.boundary_key and pframe.args.boundary_key ~= "" then
return pframe.args.boundary_key
end
return mw.title.getCurrentTitle().text
end
local function getEntry(frame)
return entries[getKey(frame)]
end
function p.get(frame)
local e = getEntry(frame); return e and e.polygon or ""
end
function p.getStyle(frame)
local e = getEntry(frame); return e and e.style or ""
end
function p.getSource(frame)
local e = getEntry(frame); return e and e.source or ""
end
function p.getMeta(frame)
local e = getEntry(frame)
if not e then return "" end
return string.format("Source: %s · %d vertices · ~%.1f km²", e.source, e.vertices, e.area_km2)
end
function p.has(frame)
return getEntry(frame) and "yes" or ""
end
function p.listKeys(frame)
local keys = {}
for k in pairs(entries) do table.insert(keys, k) end
table.sort(keys)
local out = {}
for _, k in ipairs(keys) do table.insert(out, "* [[" .. k .. "]]") end
return table.concat(out, "\n")
end
return p