Is it possible to get the compass bearing of the device when collecting a point so that it reads as text i.e., "northwest," "north," "south," etc.? If so, can someone please so me how to make this happen?
Hello,
Here is one way to do it.
function directionDesc(direction /* text */) { return Decode(direction, 'N', 'north', 'NNE', 'North-northeast', 'NE', 'northeast', 'ENE', 'East-northeast', 'E', 'east', 'ESE', 'East-northeast', 'SE', 'southeast', 'SSE', 'South-southeast', 'S', 'south', 'SSW', 'South-southeast', 'SW', 'southwest', 'WSE', 'West-southwest', 'W', 'west', 'WNW', 'West-northwest', 'NW', 'northwest', 'NNW', 'North-northwest', 'Unhandled') }; function degToDirection(deg /* number */, numDivisions /* number (4, 8, 16) */) { if (IndexOf([4, 8, 16], numDivisions) != -1) { var divSize = 360 / numDivisions; var val = Floor((deg / divSize) + 0.5) % numDivisions + 1; var arr; var arr4 = ['N', 'E', 'S', 'W']; var arr8 = ['N', 'NE', 'E', 'SE', 'S', 'SW', 'W', 'NW']; var arr16 = ['N', 'NNE', 'NE', 'ENE', 'E','ESE', 'SE', 'SSE', 'S', 'SSW', 'SW', 'WSW', 'W','WNW', 'NW', 'NNW']; if (numDivisions == 4) {arr = arr4}; var eight = 8 // because my browser keeps converting "8)" to an emoji! on the line below if (numDivisions == eight) {arr = arr8}; if (numDivisions == 16) {arr = arr16}; var idx = IIf(val == 0, 1, val); var direction = arr[idx - 1]; Console(Concatenate(Text(deg, '000'), ': ', direction)); // Console(Concatenate(Text(deg, '000'), ': ', directionDesc(direction))); // Console(Concatenate(Text(deg, '000'), ': ', directionDesc(direction), ' (', direction, ')')); return directionDesc(direction); }; return 'The value passed to numDivisions parameter is out of bounds! Expecting 4, 8, or 16.' }; /* This assumes that the feature layer schema includes gnss metadata fields and that the method of geometry capture used a gnss reciever (i.e. not user defined or snapped). You can now force users to use a gnss reciever in the map settings. */ if (!IsEmpty($feature.esrisnsr_azimuth)) {return degToDirection($feature.esrisnsr_azimuth, 16)}; ///////////////////////////////////////////////// // Division breaks for each division size Console('______ 16 Divisions ________'); degToDirection(349, 16); degToDirection(11, 16); degToDirection(12, 16); degToDirection(33, 16); degToDirection(34, 16); degToDirection(56, 16); degToDirection(57, 16); degToDirection(78, 16); degToDirection(79, 16); degToDirection(101, 16); degToDirection(102, 16); degToDirection(123, 16); degToDirection(124, 16); degToDirection(146, 16); degToDirection(147, 16); degToDirection(168, 16); degToDirection(169, 16); degToDirection(191, 16); degToDirection(192, 16); degToDirection(213, 16); degToDirection(214, 16); degToDirection(236, 16); degToDirection(237, 16); degToDirection(258, 16); degToDirection(259, 16); degToDirection(281, 16); degToDirection(282, 16); degToDirection(303, 16); degToDirection(304, 16); degToDirection(326, 16); degToDirection(327, 16); degToDirection(348, 16); degToDirection(349, 16); degToDirection(371, 16); degToDirection(372, 16); Console('______ 8 Divisions ________'); degToDirection(338, 8); degToDirection(22, 8); degToDirection(23, 8); degToDirection(67, 8); degToDirection(68, 8); degToDirection(112, 8); degToDirection(113, 8); degToDirection(157, 8); degToDirection(158, 8); degToDirection(202, 8); degToDirection(203, 8); degToDirection(247, 8); degToDirection(248, 8); degToDirection(292, 8); degToDirection(293, 8); degToDirection(337, 8); degToDirection(338, 8); degToDirection(382, 8); degToDirection(383, 8); Console('______ 4 Divisions ________'); degToDirection(315, 4); degToDirection(44, 4); degToDirection(45, 4); degToDirection(134, 4); degToDirection(135, 4); degToDirection(224, 4); degToDirection(225, 4); degToDirection(314, 4); degToDirection(315, 4); degToDirection(404, 4); degToDirection(405, 4);
-- Output -- East-northeast ______ 16 Divisions ________ 349: N 011: N 012: NNE 033: NNE 034: NE 056: NE 057: ENE 078: ENE 079: E 101: E 102: ESE 123: ESE 124: SE 146: SE 147: SSE 168: SSE 169: S 191: S 192: SSW 213: SSW 214: SW 236: SW 237: WSW 258: WSW 259: W 281: W 282: WNW 303: WNW 304: NW 326: NW 327: NNW 348: NNW 349: N 371: N 372: NNE ______ 8 Divisions ________ 338: N 022: N 023: NE 067: NE 068: E 112: E 113: SE 157: SE 158: S 202: S 203: SW 247: SW 248: W 292: W 293: NW 337: NW 338: N 382: N 383: NE ______ 4 Divisions ________ 315: N 044: N 045: E 134: E 135: S 224: S 225: W 314: W 315: N 404: N 405: E
サインインしたメンバーは投稿、更新のフォローなどができます。初めてですか?無料アカウントを登録してください。
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.