text-to-map 1.0.3 → 1.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bin/address-points.js +2 -2
- package/dist/bin/schools.js +2 -2
- package/dist/bin/streets.js +2 -2
- package/dist/db/address-points.js +6 -6
- package/dist/index.d.ts +20 -4
- package/dist/index.js +37 -4
- package/dist/open-data-sync/address-points.d.ts +1 -2
- package/dist/open-data-sync/address-points.js +1 -5
- package/dist/open-data-sync/schools.d.ts +1 -1
- package/dist/open-data-sync/schools.js +1 -1
- package/dist/open-data-sync/streets.d.ts +1 -1
- package/dist/open-data-sync/streets.js +2 -1
- package/dist/street-markdown/smd-parser.js +4 -4
- package/dist/street-markdown/types.d.ts +2 -2
- package/dist/street-markdown/types.js +1 -1
- package/dist/utils/jtsk2wgs84.d.ts +17 -0
- package/dist/utils/jtsk2wgs84.js +80 -0
- package/package.json +2 -4
- package/dist/bin/address-points-import-only.d.ts +0 -1
- package/dist/bin/address-points-import-only.js +0 -14
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { downloadAndImportAddressPoints } from "../open-data-sync/address-points";
|
|
2
2
|
console.time("downloadAndImportAllLatestAddressPoints");
|
|
3
|
-
|
|
3
|
+
downloadAndImportAddressPoints()
|
|
4
4
|
.then(() => {
|
|
5
5
|
console.timeEnd("downloadAndImportAllLatestAddressPoints");
|
|
6
6
|
})
|
package/dist/bin/schools.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { downloadAndImportSchools } from "../open-data-sync/schools";
|
|
2
|
+
downloadAndImportSchools({ tmpDir: "tmp" })
|
|
3
3
|
.then(() => {
|
|
4
4
|
console.log("Completed");
|
|
5
5
|
})
|
package/dist/bin/streets.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { downloadAndImportStreets } from "../open-data-sync/streets";
|
|
2
2
|
console.time("downloadAndImportAllStreets");
|
|
3
|
-
|
|
3
|
+
downloadAndImportStreets({})
|
|
4
4
|
.then(() => {
|
|
5
5
|
console.timeEnd("downloadAndImportAllStreets");
|
|
6
6
|
})
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import jtsk2wgs84 from "
|
|
1
|
+
import jtsk2wgs84 from "../utils/jtsk2wgs84";
|
|
2
2
|
import { AddressPointType, createSingleLineAddress } from "czech-address";
|
|
3
3
|
import { SeriesType, isNegativeSeriesSpec, isRange, isSeriesSpecArray, isWholeMunicipalitySmdLine, } from "../street-markdown/types";
|
|
4
4
|
import { findClosestString } from "../utils/helpers";
|
|
@@ -216,7 +216,7 @@ const filterAddressPointsByRanges = (addressPoints, seriesSpec) => {
|
|
|
216
216
|
var _a;
|
|
217
217
|
if (isRange(range)) {
|
|
218
218
|
const number = getNumberByType(seriesSpec.type, addressPoint);
|
|
219
|
-
return (isInRange(number, seriesSpec.type !== SeriesType.
|
|
219
|
+
return (isInRange(number, seriesSpec.type !== SeriesType.Description
|
|
220
220
|
? (_a = addressPoint.orientationalNumberLetter) !== null && _a !== void 0 ? _a : null
|
|
221
221
|
: null, range) && fitsType(number, seriesSpec.type));
|
|
222
222
|
}
|
|
@@ -252,13 +252,13 @@ export const isInRange = (number, letter, range) => {
|
|
|
252
252
|
return satisfiesFrom && satisfiesTo;
|
|
253
253
|
};
|
|
254
254
|
export const fitsType = (number, type) => {
|
|
255
|
-
return (type === SeriesType.
|
|
255
|
+
return (type === SeriesType.Description ||
|
|
256
256
|
type === SeriesType.All ||
|
|
257
257
|
(type === SeriesType.Odd && number % 2 === 1) ||
|
|
258
258
|
(type === SeriesType.Even && number % 2 === 0));
|
|
259
259
|
};
|
|
260
260
|
export const equalsFullStreetNumber = (fullStreetNumber, addressPoint) => {
|
|
261
|
-
return (fullStreetNumber.
|
|
261
|
+
return (fullStreetNumber.descriptionNumber.number === addressPoint.houseNumber &&
|
|
262
262
|
fullStreetNumber.orientationalNumber.number ===
|
|
263
263
|
addressPoint.orientationalNumber &&
|
|
264
264
|
((!fullStreetNumber.orientationalNumber.letter &&
|
|
@@ -268,7 +268,7 @@ export const equalsFullStreetNumber = (fullStreetNumber, addressPoint) => {
|
|
|
268
268
|
};
|
|
269
269
|
const getNumberByType = (type, addressPoint) => {
|
|
270
270
|
var _a;
|
|
271
|
-
return type === SeriesType.
|
|
271
|
+
return type === SeriesType.Description
|
|
272
272
|
? addressPoint.houseNumber
|
|
273
273
|
: (_a = addressPoint.orientationalNumber) !== null && _a !== void 0 ? _a : null;
|
|
274
274
|
};
|
|
@@ -303,7 +303,7 @@ const rowToAddressPoint = (row) => {
|
|
|
303
303
|
if (row.district_name !== null) {
|
|
304
304
|
point.district = row.district_name;
|
|
305
305
|
}
|
|
306
|
-
if (row.
|
|
306
|
+
if (row.prague_district_name !== null) {
|
|
307
307
|
point.pragueDistrict = row.prague_district_name;
|
|
308
308
|
}
|
|
309
309
|
point.address = createSingleLineAddress(point);
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { downloadAndImportAddressPoints, deleteDb } from "./open-data-sync/address-points";
|
|
2
|
+
import { downloadAndImportRegions } from "./open-data-sync/regions";
|
|
3
|
+
import { downloadAndImportSchools } from "./open-data-sync/schools";
|
|
4
|
+
import { downloadAndImportStreets } from "./open-data-sync/streets";
|
|
5
|
+
import { parseOrdinanceToAddressPoints } from "./street-markdown/smd";
|
|
6
|
+
import { OpenDataSyncOptions } from "./utils/helpers";
|
|
7
|
+
export * from "./street-markdown/types";
|
|
8
|
+
/**
|
|
9
|
+
* Download and import all open data to SQLite DB. The DB file will be located
|
|
10
|
+
* in the `dataDir` folder.
|
|
11
|
+
* @param options Options for the sync
|
|
12
|
+
* @param syncStreets Streets sync takes around 1 hour, so it might be skipped.
|
|
13
|
+
* ```typescript
|
|
14
|
+
* import { downloadAndImportEverything } from "text-to-map";
|
|
15
|
+
*
|
|
16
|
+
* await downloadAndImportEverything({ tmpDir: "./tmp", dataDir: "./data" });
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
export declare function downloadAndImportEverything(options?: OpenDataSyncOptions, syncStreets?: boolean): Promise<void>;
|
|
20
|
+
export { downloadAndImportAddressPoints, deleteDb, downloadAndImportSchools, downloadAndImportStreets, downloadAndImportRegions, parseOrdinanceToAddressPoints, };
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,37 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import { downloadAndImportAddressPoints, deleteDb, } from "./open-data-sync/address-points";
|
|
11
|
+
import { downloadAndImportRegions } from "./open-data-sync/regions";
|
|
12
|
+
import { downloadAndImportSchools } from "./open-data-sync/schools";
|
|
13
|
+
import { downloadAndImportStreets } from "./open-data-sync/streets";
|
|
14
|
+
import { parseOrdinanceToAddressPoints } from "./street-markdown/smd";
|
|
15
|
+
export * from "./street-markdown/types";
|
|
16
|
+
/**
|
|
17
|
+
* Download and import all open data to SQLite DB. The DB file will be located
|
|
18
|
+
* in the `dataDir` folder.
|
|
19
|
+
* @param options Options for the sync
|
|
20
|
+
* @param syncStreets Streets sync takes around 1 hour, so it might be skipped.
|
|
21
|
+
* ```typescript
|
|
22
|
+
* import { downloadAndImportEverything } from "text-to-map";
|
|
23
|
+
*
|
|
24
|
+
* await downloadAndImportEverything({ tmpDir: "./tmp", dataDir: "./data" });
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export function downloadAndImportEverything(options = {}, syncStreets = true) {
|
|
28
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
29
|
+
yield downloadAndImportAddressPoints(options);
|
|
30
|
+
yield downloadAndImportSchools(options);
|
|
31
|
+
yield downloadAndImportRegions(options);
|
|
32
|
+
if (syncStreets) {
|
|
33
|
+
yield downloadAndImportStreets(options);
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
export { downloadAndImportAddressPoints, deleteDb, downloadAndImportSchools, downloadAndImportStreets, downloadAndImportRegions, parseOrdinanceToAddressPoints, };
|
|
@@ -1,4 +1,3 @@
|
|
|
1
1
|
import { OpenDataSyncOptions } from "../utils/helpers";
|
|
2
|
-
export declare const
|
|
3
|
-
export declare const importAllLatestAddressPoints: (options?: OpenDataSyncOptions) => Promise<void>;
|
|
2
|
+
export declare const downloadAndImportAddressPoints: (options?: OpenDataSyncOptions) => Promise<void>;
|
|
4
3
|
export declare const deleteDb: (options?: OpenDataSyncOptions) => void;
|
|
@@ -54,17 +54,13 @@ const importDataToDb = (options) => __awaiter(void 0, void 0, void 0, function*
|
|
|
54
54
|
console.log(`Import completed. Total imported rows: ${total}`);
|
|
55
55
|
});
|
|
56
56
|
const getExtractionFolder = (options) => join(options.tmpDir, options.addressPointsCsvFolderName);
|
|
57
|
-
export const
|
|
57
|
+
export const downloadAndImportAddressPoints = (options = {}) => __awaiter(void 0, void 0, void 0, function* () {
|
|
58
58
|
const completeOptions = prepareOptions(options);
|
|
59
59
|
const datasetFeedLink = yield getLatestUrlFromAtomFeed(completeOptions.addressPointsAtomUrl);
|
|
60
60
|
const zipUrl = yield getLatestUrlFromAtomFeed(datasetFeedLink);
|
|
61
61
|
yield downloadAndUnzip(zipUrl, completeOptions);
|
|
62
62
|
yield importDataToDb(completeOptions);
|
|
63
63
|
});
|
|
64
|
-
export const importAllLatestAddressPoints = (options = {}) => __awaiter(void 0, void 0, void 0, function* () {
|
|
65
|
-
const completeOptions = prepareOptions(options);
|
|
66
|
-
yield importDataToDb(completeOptions);
|
|
67
|
-
});
|
|
68
64
|
export const deleteDb = (options = {}) => {
|
|
69
65
|
const completeOptions = prepareOptions(options);
|
|
70
66
|
if (existsSync(completeOptions.dbFilePath)) {
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { OpenDataSyncOptions } from "../utils/helpers";
|
|
2
|
-
export declare const
|
|
2
|
+
export declare const downloadAndImportSchools: (options: OpenDataSyncOptions) => Promise<void>;
|
|
3
3
|
export declare const deleteSchoolsXmlFile: (options?: OpenDataSyncOptions) => void;
|
|
@@ -303,7 +303,7 @@ const importDataToDb = (options, saveFoundersToCsv = false, saveSchoolsWithoutRu
|
|
|
303
303
|
const getXmlFilePath = (options) => {
|
|
304
304
|
return join(options.tmpDir, options.schoolsXmlFileName);
|
|
305
305
|
};
|
|
306
|
-
export const
|
|
306
|
+
export const downloadAndImportSchools = (options) => __awaiter(void 0, void 0, void 0, function* () {
|
|
307
307
|
const runOptions = prepareOptions(options);
|
|
308
308
|
yield downloadXml(runOptions);
|
|
309
309
|
yield importDataToDb(runOptions, false, true);
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { OpenDataSyncOptions } from "../utils/helpers";
|
|
2
|
-
export declare const
|
|
2
|
+
export declare const downloadAndImportStreets: (options: OpenDataSyncOptions) => Promise<void>;
|
|
@@ -45,7 +45,8 @@ const importDataToDb = (data) => __awaiter(void 0, void 0, void 0, function* ()
|
|
|
45
45
|
}
|
|
46
46
|
insertStreetsFromDbf(data);
|
|
47
47
|
});
|
|
48
|
-
export const
|
|
48
|
+
export const downloadAndImportStreets = (options) => __awaiter(void 0, void 0, void 0, function* () {
|
|
49
|
+
console.log("Starting to download and import streets. This takes up to 1 hour.");
|
|
49
50
|
const completeOptions = prepareOptions(options);
|
|
50
51
|
initDb(completeOptions);
|
|
51
52
|
prepareFolders(completeOptions);
|
|
@@ -178,7 +178,7 @@ export class SmdParser extends EmbeddedActionsParser {
|
|
|
178
178
|
{
|
|
179
179
|
ALT: () => {
|
|
180
180
|
this.CONSUME3(DescriptiveType);
|
|
181
|
-
type = SeriesType.
|
|
181
|
+
type = SeriesType.Description;
|
|
182
182
|
},
|
|
183
183
|
},
|
|
184
184
|
]);
|
|
@@ -265,7 +265,7 @@ export class SmdParser extends EmbeddedActionsParser {
|
|
|
265
265
|
},
|
|
266
266
|
{
|
|
267
267
|
ALT: () => {
|
|
268
|
-
type = SeriesType.
|
|
268
|
+
type = SeriesType.Description;
|
|
269
269
|
this.CONSUME(DescriptiveType);
|
|
270
270
|
},
|
|
271
271
|
},
|
|
@@ -308,7 +308,7 @@ export class SmdParser extends EmbeddedActionsParser {
|
|
|
308
308
|
},
|
|
309
309
|
{
|
|
310
310
|
ALT: () => {
|
|
311
|
-
type = SeriesType.
|
|
311
|
+
type = SeriesType.Description;
|
|
312
312
|
this.CONSUME(DescriptiveType);
|
|
313
313
|
},
|
|
314
314
|
},
|
|
@@ -321,7 +321,7 @@ export class SmdParser extends EmbeddedActionsParser {
|
|
|
321
321
|
const descriptiveNumber = parseRichNumber(this.CONSUME(Number).image);
|
|
322
322
|
this.CONSUME(Slash);
|
|
323
323
|
const orientationNumber = parseRichNumber(this.CONSUME2(Number).image);
|
|
324
|
-
return { descriptiveNumber, orientationalNumber: orientationNumber };
|
|
324
|
+
return { descriptionNumber: descriptiveNumber, orientationalNumber: orientationNumber };
|
|
325
325
|
});
|
|
326
326
|
this.performSelfAnalysis();
|
|
327
327
|
}
|
|
@@ -32,7 +32,7 @@ export interface RichNumber {
|
|
|
32
32
|
letter?: string;
|
|
33
33
|
}
|
|
34
34
|
export interface FullStreetNumber {
|
|
35
|
-
|
|
35
|
+
descriptionNumber: RichNumber;
|
|
36
36
|
orientationalNumber: RichNumber;
|
|
37
37
|
}
|
|
38
38
|
export declare const isFullStreetNumber: (something: RangeSpec | FullStreetNumber) => something is FullStreetNumber;
|
|
@@ -41,7 +41,7 @@ export declare enum SeriesType {
|
|
|
41
41
|
Even = 0,
|
|
42
42
|
Odd = 1,
|
|
43
43
|
All = 2,
|
|
44
|
-
|
|
44
|
+
Description = 3
|
|
45
45
|
}
|
|
46
46
|
export interface AddressPoint extends CzechAddressPoint {
|
|
47
47
|
id: number;
|
|
@@ -8,6 +8,6 @@ export var SeriesType;
|
|
|
8
8
|
SeriesType[SeriesType["Even"] = 0] = "Even";
|
|
9
9
|
SeriesType[SeriesType["Odd"] = 1] = "Odd";
|
|
10
10
|
SeriesType[SeriesType["All"] = 2] = "All";
|
|
11
|
-
SeriesType[SeriesType["
|
|
11
|
+
SeriesType[SeriesType["Description"] = 3] = "Description";
|
|
12
12
|
})(SeriesType || (SeriesType = {}));
|
|
13
13
|
export const isAddressPoint = (something) => something.hasOwnProperty("id");
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export interface ConversionResult {
|
|
2
|
+
jtsk_x: number;
|
|
3
|
+
jtsk_y: number;
|
|
4
|
+
lat: number;
|
|
5
|
+
lon: number;
|
|
6
|
+
altitude: number;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Convert JTSK to WGS84 - taken from @arodax/jtsk2wgs84 package that had some
|
|
10
|
+
* import issues.
|
|
11
|
+
*
|
|
12
|
+
* @param x
|
|
13
|
+
* @param y
|
|
14
|
+
* @param h
|
|
15
|
+
* @return {{jtsk_x: number, jtsk_y: number, lon: number, lat: number, altitude: number}}
|
|
16
|
+
*/
|
|
17
|
+
export default function jtsk2wgs84(x: number, y: number, h?: number): ConversionResult;
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Convert JTSK to WGS84 - taken from @arodax/jtsk2wgs84 package that had some
|
|
3
|
+
* import issues.
|
|
4
|
+
*
|
|
5
|
+
* @param x
|
|
6
|
+
* @param y
|
|
7
|
+
* @param h
|
|
8
|
+
* @return {{jtsk_x: number, jtsk_y: number, lon: number, lat: number, altitude: number}}
|
|
9
|
+
*/
|
|
10
|
+
export default function jtsk2wgs84(x, y, h = 200) {
|
|
11
|
+
const originalX = x;
|
|
12
|
+
const originalY = y;
|
|
13
|
+
let a = 6377397.15508;
|
|
14
|
+
let e = 0.081696831215303;
|
|
15
|
+
let n = 0.97992470462083;
|
|
16
|
+
let uRo = 12310230.12797036;
|
|
17
|
+
let sinUQ = 0.863499969506341;
|
|
18
|
+
let cosUQ = 0.504348889819882;
|
|
19
|
+
let sinVQ = 0.420215144586493;
|
|
20
|
+
let cosVQ = 0.907424504992097;
|
|
21
|
+
let alpha = 1.000597498371542;
|
|
22
|
+
let k = 1.003419163966575;
|
|
23
|
+
let ro = Math.sqrt(x * x + y * y);
|
|
24
|
+
let epsilon = 2 * Math.atan(y / (ro + x));
|
|
25
|
+
let D = epsilon / n;
|
|
26
|
+
let S = 2 * Math.atan(Math.exp((1 / n) * Math.log(uRo / ro))) - Math.PI / 2;
|
|
27
|
+
let sinS = Math.sin(S);
|
|
28
|
+
let cosS = Math.cos(S);
|
|
29
|
+
let sinU = sinUQ * sinS - cosUQ * cosS * Math.cos(D);
|
|
30
|
+
let cosU = Math.sqrt(1 - sinU * sinU);
|
|
31
|
+
let sinDV = (Math.sin(D) * cosS) / cosU;
|
|
32
|
+
let cosDV = Math.sqrt(1 - sinDV * sinDV);
|
|
33
|
+
let sinV = sinVQ * cosDV - cosVQ * sinDV;
|
|
34
|
+
let cosV = cosVQ * cosDV + sinVQ * sinDV;
|
|
35
|
+
let lJtsk = (2 * Math.atan(sinV / (1 + cosV))) / alpha;
|
|
36
|
+
let t = Math.exp((2 / alpha) * Math.log((1 + sinU) / cosU / k));
|
|
37
|
+
let pom = (t - 1) / (t + 1);
|
|
38
|
+
let sinB = pom;
|
|
39
|
+
do {
|
|
40
|
+
sinB = pom;
|
|
41
|
+
pom = t * Math.exp(e * Math.log((1 + e * sinB) / (1 - e * sinB)));
|
|
42
|
+
pom = (pom - 1) / (pom + 1);
|
|
43
|
+
} while (Math.abs(pom - sinB) > 1e-15);
|
|
44
|
+
let bJtsk = Math.atan(pom / Math.sqrt(1 - pom * pom));
|
|
45
|
+
let f1 = 299.152812853;
|
|
46
|
+
let e2 = 1 - (1 - 1 / f1) * (1 - 1 / f1);
|
|
47
|
+
ro = a / Math.sqrt(1 - e2 * Math.sin(bJtsk) * Math.sin(bJtsk));
|
|
48
|
+
x = (ro + h) * Math.cos(bJtsk) * Math.cos(lJtsk);
|
|
49
|
+
y = (ro + h) * Math.cos(bJtsk) * Math.sin(lJtsk);
|
|
50
|
+
let z = ((1 - e2) * ro + h) * Math.sin(bJtsk);
|
|
51
|
+
let dx = 570.69;
|
|
52
|
+
let dy = 85.69;
|
|
53
|
+
let dz = 462.84;
|
|
54
|
+
let wz = ((-5.2611 / 3600) * Math.PI) / 180;
|
|
55
|
+
let wy = ((-1.58676 / 3600) * Math.PI) / 180;
|
|
56
|
+
let wx = ((-4.99821 / 3600) * Math.PI) / 180;
|
|
57
|
+
let m = 3.543e-6;
|
|
58
|
+
let xn = dx + (1 + m) * (x + wz * y - wy * z);
|
|
59
|
+
let yn = dy + (1 + m) * (-wz * x + y + wx * z);
|
|
60
|
+
let zn = dz + (1 + m) * (wy * x - wx * y + z);
|
|
61
|
+
a = 6378137.0;
|
|
62
|
+
f1 = 298.257223563;
|
|
63
|
+
let aB = f1 / (f1 - 1);
|
|
64
|
+
let p = Math.sqrt(xn * xn + yn * yn);
|
|
65
|
+
e2 = 1 - (1 - 1 / f1) * (1 - 1 / f1);
|
|
66
|
+
let theta = Math.atan((zn * aB) / p);
|
|
67
|
+
let st = Math.sin(theta);
|
|
68
|
+
let ct = Math.cos(theta);
|
|
69
|
+
t = (zn + e2 * aB * a * st * st * st) / (p - e2 * a * ct * ct * ct);
|
|
70
|
+
let B = Math.atan(t);
|
|
71
|
+
let L = 2 * Math.atan(yn / (p + xn));
|
|
72
|
+
h = Math.sqrt(1 + t * t) * (p - a / Math.sqrt(1 + (1 - e2) * t * t));
|
|
73
|
+
return {
|
|
74
|
+
jtsk_x: originalX,
|
|
75
|
+
jtsk_y: originalY,
|
|
76
|
+
lat: (B / Math.PI) * 180,
|
|
77
|
+
lon: (L / Math.PI) * 180,
|
|
78
|
+
altitude: Math.round(h * 100) / 100,
|
|
79
|
+
};
|
|
80
|
+
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"type": "module",
|
|
3
3
|
"dependencies": {
|
|
4
|
-
"@arodax/jtsk2wgs84": "^1.0.2",
|
|
5
4
|
"@turf/distance": "^6.5.0",
|
|
6
5
|
"adm-zip": "^0.5.9",
|
|
7
6
|
"better-sqlite3": "^8.0.1",
|
|
@@ -31,7 +30,6 @@
|
|
|
31
30
|
},
|
|
32
31
|
"scripts": {
|
|
33
32
|
"address-points": "ts-node --experimental-specifier-resolution=node --esm src/bin/address-points.ts",
|
|
34
|
-
"address-points-import-only": "ts-node --experimental-specifier-resolution=node --esm src/bin/address-points-import-only.ts",
|
|
35
33
|
"schools": "ts-node --experimental-specifier-resolution=node --esm src/bin/schools.ts",
|
|
36
34
|
"clear-all": "ts-node --experimental-specifier-resolution=node --esm src/bin/clear-all.ts",
|
|
37
35
|
"parse-ordinance": "ts-node --experimental-specifier-resolution=node --esm src/bin/parse-ordinance.ts",
|
|
@@ -39,7 +37,7 @@
|
|
|
39
37
|
"streets": "ts-node --experimental-specifier-resolution=node --esm src/bin/streets.ts",
|
|
40
38
|
"regions": "ts-node --experimental-specifier-resolution=node --esm src/bin/regions.ts",
|
|
41
39
|
"dbf": "ts-node --experimental-specifier-resolution=node --esm src/bin/dbf.ts",
|
|
42
|
-
"test": "jest",
|
|
40
|
+
"test": "node --experimental-vm-modules --no-warnings node_modules/jest/bin/jest.js -c=jest-esm.config.mjs --no-cache",
|
|
43
41
|
"ordinance-to-csv-rules": "node src/smd-to-csv/ordinance-to-csv-rules.js",
|
|
44
42
|
"clean": "rimraf dist",
|
|
45
43
|
"copyfiles": "copyfiles -u 1 src/address_points_init.db dist",
|
|
@@ -50,7 +48,7 @@
|
|
|
50
48
|
},
|
|
51
49
|
"name": "text-to-map",
|
|
52
50
|
"description": "Text To Map usiluje o lepší, strojově zpracovatelné využití částí vyhlášek s výčtem ulic a dalších lokací. Jde o rozšiřitelnou sadu konceptů a nástrojů, které zajistí hladký převod výčtu ulic a jejich rozsahů v lidsky srozumitelném jazyce do strojově zpracovatelného, uchopitelného formátu.",
|
|
53
|
-
"version": "1.0.
|
|
51
|
+
"version": "1.0.5",
|
|
54
52
|
"main": "dist/index.js",
|
|
55
53
|
"types": "dist/index.d.ts",
|
|
56
54
|
"files": [
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { importAllLatestAddressPoints } from "../open-data-sync/address-points";
|
|
2
|
-
console.time("importOnly");
|
|
3
|
-
importAllLatestAddressPoints({})
|
|
4
|
-
.then(() => {
|
|
5
|
-
console.timeEnd("importOnly");
|
|
6
|
-
})
|
|
7
|
-
.catch((error) => {
|
|
8
|
-
if (error.hasOwnProperty("stack")) {
|
|
9
|
-
console.log(error, error.stack);
|
|
10
|
-
}
|
|
11
|
-
else {
|
|
12
|
-
console.log(error);
|
|
13
|
-
}
|
|
14
|
-
});
|