@regionerne/gis-komponent 0.0.117 → 0.0.118
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.
|
@@ -2142,6 +2142,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
2142
2142
|
type: Injectable
|
|
2143
2143
|
}] });
|
|
2144
2144
|
|
|
2145
|
+
class GeometryService {
|
|
2146
|
+
config = inject(GISKOMPONENT_CONFIG);
|
|
2147
|
+
_baseUrl = this.config.apiBaseUrl;
|
|
2148
|
+
_http = inject(HttpClient);
|
|
2149
|
+
validate(wkt) {
|
|
2150
|
+
const url = `${this._baseUrl}/api/geometry/validate`;
|
|
2151
|
+
return this._http.post(url, { wkt: wkt });
|
|
2152
|
+
}
|
|
2153
|
+
dmpValidate(wkt) {
|
|
2154
|
+
const url = `${this._baseUrl}/api/geometry/dmpvalidate`;
|
|
2155
|
+
return this._http.post(url, { wkt: wkt });
|
|
2156
|
+
}
|
|
2157
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: GeometryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
2158
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: GeometryService, providedIn: 'root' });
|
|
2159
|
+
}
|
|
2160
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: GeometryService, decorators: [{
|
|
2161
|
+
type: Injectable,
|
|
2162
|
+
args: [{
|
|
2163
|
+
providedIn: 'root'
|
|
2164
|
+
}]
|
|
2165
|
+
}] });
|
|
2166
|
+
|
|
2145
2167
|
class MergeFeaturesService {
|
|
2146
2168
|
_current = inject(CurrentItemsService);
|
|
2147
2169
|
_featureHelper = inject(FeatureHelperService);
|
|
@@ -2149,9 +2171,11 @@ class MergeFeaturesService {
|
|
|
2149
2171
|
_drawLayerService = inject(DrawLayerSourceService);
|
|
2150
2172
|
_undoRedoService = inject(UndoRedoService);
|
|
2151
2173
|
_overLapService = inject(OverlapService);
|
|
2174
|
+
_geometryService = inject(GeometryService);
|
|
2152
2175
|
_selectedMergeFeature;
|
|
2153
2176
|
formatter = new GeoJSON$1();
|
|
2154
2177
|
_formatterOptions = { dataProjection: 'EPSG:4326', featureProjection: 'EPSG:25832' };
|
|
2178
|
+
_wktFormat = new WKT$1();
|
|
2155
2179
|
_selectFilter(f, typeId) {
|
|
2156
2180
|
if (this._featureHelper.isLocked(f)) {
|
|
2157
2181
|
return false;
|
|
@@ -2187,29 +2211,44 @@ class MergeFeaturesService {
|
|
|
2187
2211
|
if (evt.selected && evt.selected.length > 0 && this._selectedMergeFeature.getId() !== evt.selected[0].getId()) {
|
|
2188
2212
|
const feature1 = this.formatter.writeFeatureObject(this._selectedMergeFeature, this._formatterOptions);
|
|
2189
2213
|
const feature2 = this.formatter.writeFeatureObject(evt.selected[0], this._formatterOptions);
|
|
2190
|
-
const bufferedFeature1 = buffer(feature1,
|
|
2191
|
-
const bufferedFeature2 = buffer(feature2,
|
|
2192
|
-
const
|
|
2214
|
+
const bufferedFeature1 = buffer(feature1, 1, { units: 'centimeters' });
|
|
2215
|
+
const bufferedFeature2 = buffer(feature2, 1, { units: 'centimeters' });
|
|
2216
|
+
const newFeatureObjectUnminusBuffered = union(featureCollection([bufferedFeature1, bufferedFeature2]));
|
|
2217
|
+
const newFeatureObject = buffer(newFeatureObjectUnminusBuffered, -1, { units: 'centimeters' });
|
|
2193
2218
|
const newFeature = this.formatter.readFeature(newFeatureObject, this._formatterOptions);
|
|
2194
|
-
this.
|
|
2195
|
-
|
|
2196
|
-
|
|
2197
|
-
|
|
2198
|
-
|
|
2199
|
-
|
|
2200
|
-
|
|
2201
|
-
|
|
2202
|
-
|
|
2203
|
-
this.
|
|
2204
|
-
this._featureHelper.
|
|
2205
|
-
this.
|
|
2206
|
-
|
|
2219
|
+
const newFeatureWKT = this._wktFormat.writeGeometry(newFeature.getGeometry());
|
|
2220
|
+
this._geometryService.validate(newFeatureWKT).subscribe({
|
|
2221
|
+
next: r => {
|
|
2222
|
+
const result = r;
|
|
2223
|
+
if (result.wasCorrected) {
|
|
2224
|
+
const geometry = this._wktFormat.readGeometry(result.correctedGeometries[0]);
|
|
2225
|
+
newFeature.setGeometry(geometry);
|
|
2226
|
+
}
|
|
2227
|
+
this._drawLayerService.source.removeFeatures([evt.selected[0], this._selectedMergeFeature]);
|
|
2228
|
+
const style = this._selectedMergeFeature.getStyle();
|
|
2229
|
+
const typeId = this._featureHelper.typeId(this._selectedMergeFeature);
|
|
2230
|
+
this._overLapService.handleOverlaps([newFeature]).subscribe({
|
|
2231
|
+
next: overlapResult => {
|
|
2232
|
+
this._selectedMergeFeature?.setGeometry(overlapResult[0].getGeometry());
|
|
2233
|
+
const mergedFeature = evt.selected[0].clone();
|
|
2234
|
+
mergedFeature.setGeometry(overlapResult[0].getGeometry());
|
|
2235
|
+
mergedFeature.setStyle(style);
|
|
2236
|
+
this._featureHelper.setTypeId(mergedFeature, typeId);
|
|
2237
|
+
this._featureHelper.setId(mergedFeature);
|
|
2238
|
+
this._drawLayerService.source.addFeature(mergedFeature);
|
|
2239
|
+
this._undoRedoService.addStep();
|
|
2240
|
+
this._selectedMergeFeature = undefined;
|
|
2241
|
+
map.removeInteraction(select);
|
|
2242
|
+
done();
|
|
2243
|
+
}
|
|
2244
|
+
});
|
|
2207
2245
|
}
|
|
2208
2246
|
});
|
|
2209
2247
|
}
|
|
2210
|
-
|
|
2211
|
-
|
|
2212
|
-
|
|
2248
|
+
else {
|
|
2249
|
+
this._selectedMergeFeature = undefined;
|
|
2250
|
+
done();
|
|
2251
|
+
}
|
|
2213
2252
|
}
|
|
2214
2253
|
else {
|
|
2215
2254
|
this._selectedMergeFeature = evt.selected[0];
|
|
@@ -2629,28 +2668,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
2629
2668
|
type: Injectable
|
|
2630
2669
|
}] });
|
|
2631
2670
|
|
|
2632
|
-
class GeometryService {
|
|
2633
|
-
config = inject(GISKOMPONENT_CONFIG);
|
|
2634
|
-
_baseUrl = this.config.apiBaseUrl;
|
|
2635
|
-
_http = inject(HttpClient);
|
|
2636
|
-
validate(wkt) {
|
|
2637
|
-
const url = `${this._baseUrl}/api/geometry/validate`;
|
|
2638
|
-
return this._http.post(url, { wkt: wkt });
|
|
2639
|
-
}
|
|
2640
|
-
dmpValidate(wkt) {
|
|
2641
|
-
const url = `${this._baseUrl}/api/geometry/dmpvalidate`;
|
|
2642
|
-
return this._http.post(url, { wkt: wkt });
|
|
2643
|
-
}
|
|
2644
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: GeometryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
2645
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: GeometryService, providedIn: 'root' });
|
|
2646
|
-
}
|
|
2647
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: GeometryService, decorators: [{
|
|
2648
|
-
type: Injectable,
|
|
2649
|
-
args: [{
|
|
2650
|
-
providedIn: 'root'
|
|
2651
|
-
}]
|
|
2652
|
-
}] });
|
|
2653
|
-
|
|
2654
2671
|
class PrintHelperService {
|
|
2655
2672
|
_layerHelper = inject(LayerHelperService);
|
|
2656
2673
|
setVisibiltyOnDOMElements(baseElement, visible, printSetting) {
|