Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 | 1x 8x 8x 8x 8x 1x 7x 7x 2x 7x 7x 7x 7x 7x 7x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 6x 4x 4x 4x 4x 4x 4x 4x 4x 7x 7x 4x 4x 4x 4x 4x 3x 3x 1x | import Logger from "../Utils/LoggerByDefault"; /** * Lecture / Ecriture du format WKT * * Les besoins sont assez simples : * 1. lecture des types suivants : * - LINESTRING * - POLYGON * - (TODO) * 2. convertir aux formats suivants : * - json * - (TODO) * * * @example * var strWKT = "LINESTRING (2.416907 48.846577, 2.416916 48.846613)"; * WKT.toJson (strWKT, * function onSuccess (json) { * // { * // type : 'LINESTRING', * // coordinates : [ * // [2.416907, 48.846577], * // [2.416916, 48.846613] * // ] * // } * }, * function onError (error) { * console.log(error); * } * ); * * @module WKT * @alias Gp.Formats.WKT * @private */ var WKT = { /** * Parsing d'une chaine WKT * * @method toJson * @param {String} strWkt - chaine de type WKT * @param {Function} success - fonction callback * @param {Function} error - fonction callback */ toJson : function (strWkt, success, error) { var logger = Logger.getLogger(); var json = null; try { if (!strWkt) { throw new Error("La chaine WKT n'est pas renseignée !"); } Iif (!success) { // callback success par defaut success = function (json) { console.log(json); }; } if (!error) { // callback error par defaut error = function (e) { console.log(e); }; } var regex; var subst; // regex coordinates regex = /(-?\d+\.?[0-9]*)\s(-?\d+\.?[0-9]+)/g; subst = "[$1,$2]"; strWkt = strWkt.replace(regex, subst); // regex type regex = /^(\w+)/; regex.exec(strWkt); if (RegExp.$1 === "POLYGON") { subst = "{\"type\" : \"Polygon\","; strWkt = strWkt.replace(RegExp.$1, subst); // clean // (( --> coordinates : [[ regex = /(\({2}?)/; subst = "\"coordinates\" : [["; strWkt = strWkt.replace(regex, subst); // )) --> ]]} regex = /(\){2}?)/; subst = "]]}"; strWkt = strWkt.replace(regex, subst); // all ( --> [ regex = /(\()/g; subst = "["; strWkt = strWkt.replace(regex, subst); // all ) --> ] regex = /(\))/g; subst = "]"; strWkt = strWkt.replace(regex, subst); } else if (RegExp.$1 === "LINESTRING") { subst = "{\"type\" : \"LineString\","; strWkt = strWkt.replace(RegExp.$1, subst); // clean regex = /(\(\(?)/; subst = "\"coordinates\" : ["; strWkt = strWkt.replace(regex, subst); regex = /(\)\)?)/; subst = "]}"; strWkt = strWkt.replace(regex, subst); } logger.trace(strWkt); json = JSON.parse(strWkt); Iif (!json) { throw new Error("Le JSON est vide !"); } Iif (!json.type) { throw new Error("Le type de geometrie n'est pas connu !"); } Iif (!json.coordinates) { throw new Error("La liste des points est vide !"); } success.call(this, json); } catch (e) { if (e.name === "SyntaxError") { error.call(this, "Erreur de parsing JSON !"); return; } error.call(this, e); } } }; export default WKT; |