@dpkit/table
Version:
Data Package implementation in TypeScript.
24 lines • 3.37 kB
JavaScript
import { DataType, col, lit } from "nodejs-polars";
export function parseGeopointField(field, expr) {
expr = expr ?? col(field.name);
// Default format is "lon,lat" string
const format = field.format || "default";
if (format === "default") {
expr = expr.str.split(",").cast(DataType.List(DataType.Float64));
// TODO:
// Add more validation:
// - Check the length of the list is 2 (no list.lenghts in polars currently)
// - Check the values are within -180..180 and -90..90
// - Return null instead of list if any of the values are out of range
}
if (format === "object") {
// TODO: implement
expr = lit(null).alias(field.name);
}
if (format === "array") {
// TODO: implement
expr = lit(null).alias(field.name);
}
return expr;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvcG9pbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9maWVsZC90eXBlcy9nZW9wb2ludC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFHbEQsTUFBTSxVQUFVLGtCQUFrQixDQUFDLEtBQW9CLEVBQUUsSUFBVztJQUNsRSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUE7SUFFOUIscUNBQXFDO0lBQ3JDLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLElBQUksU0FBUyxDQUFBO0lBRXhDLElBQUksTUFBTSxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQ3pCLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQTtRQUNoRSxRQUFRO1FBQ1IsdUJBQXVCO1FBQ3ZCLDRFQUE0RTtRQUM1RSxzREFBc0Q7UUFDdEQsc0VBQXNFO0lBQ3hFLENBQUM7SUFFRCxJQUFJLE1BQU0sS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUN4QixrQkFBa0I7UUFDbEIsSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQ3BDLENBQUM7SUFFRCxJQUFJLE1BQU0sS0FBSyxPQUFPLEVBQUUsQ0FBQztRQUN2QixrQkFBa0I7UUFDbEIsSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQ3BDLENBQUM7SUFFRCxPQUFPLElBQUksQ0FBQTtBQUNiLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEdlb3BvaW50RmllbGQgfSBmcm9tIFwiQGRwa2l0L2NvcmVcIlxuaW1wb3J0IHsgRGF0YVR5cGUsIGNvbCwgbGl0IH0gZnJvbSBcIm5vZGVqcy1wb2xhcnNcIlxuaW1wb3J0IHR5cGUgeyBFeHByIH0gZnJvbSBcIm5vZGVqcy1wb2xhcnNcIlxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VHZW9wb2ludEZpZWxkKGZpZWxkOiBHZW9wb2ludEZpZWxkLCBleHByPzogRXhwcikge1xuICBleHByID0gZXhwciA/PyBjb2woZmllbGQubmFtZSlcblxuICAvLyBEZWZhdWx0IGZvcm1hdCBpcyBcImxvbixsYXRcIiBzdHJpbmdcbiAgY29uc3QgZm9ybWF0ID0gZmllbGQuZm9ybWF0IHx8IFwiZGVmYXVsdFwiXG5cbiAgaWYgKGZvcm1hdCA9PT0gXCJkZWZhdWx0XCIpIHtcbiAgICBleHByID0gZXhwci5zdHIuc3BsaXQoXCIsXCIpLmNhc3QoRGF0YVR5cGUuTGlzdChEYXRhVHlwZS5GbG9hdDY0KSlcbiAgICAvLyBUT0RPOlxuICAgIC8vIEFkZCBtb3JlIHZhbGlkYXRpb246XG4gICAgLy8gLSBDaGVjayB0aGUgbGVuZ3RoIG9mIHRoZSBsaXN0IGlzIDIgKG5vIGxpc3QubGVuZ2h0cyBpbiBwb2xhcnMgY3VycmVudGx5KVxuICAgIC8vIC0gQ2hlY2sgdGhlIHZhbHVlcyBhcmUgd2l0aGluIC0xODAuLjE4MCBhbmQgLTkwLi45MFxuICAgIC8vIC0gUmV0dXJuIG51bGwgaW5zdGVhZCBvZiBsaXN0IGlmIGFueSBvZiB0aGUgdmFsdWVzIGFyZSBvdXQgb2YgcmFuZ2VcbiAgfVxuXG4gIGlmIChmb3JtYXQgPT09IFwib2JqZWN0XCIpIHtcbiAgICAvLyBUT0RPOiBpbXBsZW1lbnRcbiAgICBleHByID0gbGl0KG51bGwpLmFsaWFzKGZpZWxkLm5hbWUpXG4gIH1cblxuICBpZiAoZm9ybWF0ID09PSBcImFycmF5XCIpIHtcbiAgICAvLyBUT0RPOiBpbXBsZW1lbnRcbiAgICBleHByID0gbGl0KG51bGwpLmFsaWFzKGZpZWxkLm5hbWUpXG4gIH1cblxuICByZXR1cm4gZXhwclxufVxuIl19