Rework transformWithOptions
Create one function per input/output type: `transformGeometryWithOptions` and `transformExtentWithOptions`.
This commit is contained in:
@@ -4,7 +4,7 @@
|
|||||||
import Feature from '../Feature.js';
|
import Feature from '../Feature.js';
|
||||||
import {assert} from '../asserts.js';
|
import {assert} from '../asserts.js';
|
||||||
import {containsExtent} from '../extent.js';
|
import {containsExtent} from '../extent.js';
|
||||||
import {transformWithOptions} from './Feature.js';
|
import {transformGeometryWithOptions} from './Feature.js';
|
||||||
import JSONFeature from './JSONFeature.js';
|
import JSONFeature from './JSONFeature.js';
|
||||||
import GeometryLayout from '../geom/GeometryLayout.js';
|
import GeometryLayout from '../geom/GeometryLayout.js';
|
||||||
import GeometryType from '../geom/GeometryType.js';
|
import GeometryType from '../geom/GeometryType.js';
|
||||||
@@ -263,9 +263,7 @@ function readGeometry(object, opt_options) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
const geometryReader = GEOMETRY_READERS[type];
|
const geometryReader = GEOMETRY_READERS[type];
|
||||||
return (
|
return transformGeometryWithOptions(geometryReader(object), false, opt_options);
|
||||||
/** @type {import("../geom/Geometry.js").default} */ (transformWithOptions(geometryReader(object), false, opt_options))
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -563,8 +561,7 @@ function writeMultiPolygonGeometry(geometry, opt_options) {
|
|||||||
*/
|
*/
|
||||||
function writeGeometry(geometry, opt_options) {
|
function writeGeometry(geometry, opt_options) {
|
||||||
const geometryWriter = GEOMETRY_WRITERS[geometry.getType()];
|
const geometryWriter = GEOMETRY_WRITERS[geometry.getType()];
|
||||||
return geometryWriter(/** @type {import("../geom/Geometry.js").default} */(
|
return geometryWriter(transformGeometryWithOptions(geometry, true, opt_options), opt_options);
|
||||||
transformWithOptions(geometry, true, opt_options)), opt_options);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -214,39 +214,24 @@ class FeatureFormat {
|
|||||||
export default FeatureFormat;
|
export default FeatureFormat;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {import("../geom/Geometry.js").default|import("../extent.js").Extent} geometry Geometry.
|
* @param {import("../geom/Geometry.js").default} geometry Geometry.
|
||||||
* @param {boolean} write Set to true for writing, false for reading.
|
* @param {boolean} write Set to true for writing, false for reading.
|
||||||
* @param {(WriteOptions|ReadOptions)=} opt_options Options.
|
* @param {(WriteOptions|ReadOptions)=} opt_options Options.
|
||||||
* @return {import("../geom/Geometry.js").default|import("../extent.js").Extent} Transformed geometry.
|
* @return {import("../geom/Geometry.js").default} Transformed geometry.
|
||||||
*/
|
*/
|
||||||
export function transformWithOptions(geometry, write, opt_options) {
|
export function transformGeometryWithOptions(geometry, write, opt_options) {
|
||||||
const featureProjection = opt_options ?
|
const featureProjection = opt_options ? getProjection(opt_options.featureProjection) : null;
|
||||||
getProjection(opt_options.featureProjection) : null;
|
const dataProjection = opt_options ? getProjection(opt_options.dataProjection) : null;
|
||||||
const dataProjection = opt_options ?
|
|
||||||
getProjection(opt_options.dataProjection) : null;
|
|
||||||
/**
|
|
||||||
* @type {import("../geom/Geometry.js").default|import("../extent.js").Extent}
|
|
||||||
*/
|
|
||||||
let transformed;
|
let transformed;
|
||||||
if (featureProjection && dataProjection &&
|
if (featureProjection && dataProjection && !equivalentProjection(featureProjection, dataProjection)) {
|
||||||
!equivalentProjection(featureProjection, dataProjection)) {
|
transformed = (write ? geometry.clone() : geometry).transform(
|
||||||
if (Array.isArray(geometry)) {
|
write ? featureProjection : dataProjection,
|
||||||
// FIXME this is necessary because GML treats extents
|
write ? dataProjection : featureProjection);
|
||||||
// as geometries
|
|
||||||
transformed = transformExtent(
|
|
||||||
geometry,
|
|
||||||
dataProjection,
|
|
||||||
featureProjection);
|
|
||||||
} else {
|
|
||||||
transformed = (write ? /** @type {import("../geom/Geometry").default} */ (geometry).clone() : geometry).transform(
|
|
||||||
write ? featureProjection : dataProjection,
|
|
||||||
write ? dataProjection : featureProjection);
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
transformed = geometry;
|
transformed = geometry;
|
||||||
}
|
}
|
||||||
if (write && opt_options && /** @type {WriteOptions} */ (opt_options).decimals !== undefined &&
|
if (write && opt_options && /** @type {WriteOptions} */ (opt_options).decimals !== undefined) {
|
||||||
!Array.isArray(transformed)) {
|
|
||||||
const power = Math.pow(10, /** @type {WriteOptions} */ (opt_options).decimals);
|
const power = Math.pow(10, /** @type {WriteOptions} */ (opt_options).decimals);
|
||||||
// if decimals option on write, round each coordinate appropriately
|
// if decimals option on write, round each coordinate appropriately
|
||||||
/**
|
/**
|
||||||
@@ -260,9 +245,26 @@ export function transformWithOptions(geometry, write, opt_options) {
|
|||||||
return coordinates;
|
return coordinates;
|
||||||
};
|
};
|
||||||
if (transformed === geometry) {
|
if (transformed === geometry) {
|
||||||
transformed = /** @type {import("../geom/Geometry").default} */ (geometry).clone();
|
transformed = geometry.clone();
|
||||||
}
|
}
|
||||||
transformed.applyTransform(transform);
|
transformed.applyTransform(transform);
|
||||||
}
|
}
|
||||||
return transformed;
|
return transformed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {import("../extent.js").Extent} extent Extent.
|
||||||
|
* @param {ReadOptions=} opt_options Read options.
|
||||||
|
* @return {import("../extent.js").Extent} Transformed extent.
|
||||||
|
*/
|
||||||
|
export function transformExtentWithOptions(extent, opt_options) {
|
||||||
|
const featureProjection = opt_options ? getProjection(opt_options.featureProjection) : null;
|
||||||
|
const dataProjection = opt_options ? getProjection(opt_options.dataProjection) : null;
|
||||||
|
|
||||||
|
if (featureProjection && dataProjection && !equivalentProjection(featureProjection, dataProjection)) {
|
||||||
|
return transformExtent(extent, dataProjection, featureProjection);
|
||||||
|
} else {
|
||||||
|
return extent;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -2,11 +2,11 @@
|
|||||||
* @module ol/format/GML2
|
* @module ol/format/GML2
|
||||||
*/
|
*/
|
||||||
import {createOrUpdate} from '../extent.js';
|
import {createOrUpdate} from '../extent.js';
|
||||||
import {transformWithOptions} from './Feature.js';
|
import {transformExtentWithOptions, transformGeometryWithOptions} from './Feature.js';
|
||||||
import GMLBase, {GMLNS} from './GMLBase.js';
|
import GMLBase, {GMLNS} from './GMLBase.js';
|
||||||
import {writeStringTextNode} from './xsd.js';
|
import {writeStringTextNode} from './xsd.js';
|
||||||
import {assign} from '../obj.js';
|
import {assign} from '../obj.js';
|
||||||
import {get as getProjection, transformExtent} from '../proj.js';
|
import {get as getProjection} from '../proj.js';
|
||||||
import {createElementNS, getAllTextContent, makeArrayPusher, makeChildAppender,
|
import {createElementNS, getAllTextContent, makeArrayPusher, makeChildAppender,
|
||||||
makeReplacer, makeSimpleNodeFactory, OBJECT_PROPERTY_NODE_FACTORY, pushParseAndPop, pushSerializeAndPop} from '../xml.js';
|
makeReplacer, makeSimpleNodeFactory, OBJECT_PROPERTY_NODE_FACTORY, pushParseAndPop, pushSerializeAndPop} from '../xml.js';
|
||||||
|
|
||||||
@@ -287,14 +287,9 @@ class GML2 extends GMLBase {
|
|||||||
item['node'] = node;
|
item['node'] = node;
|
||||||
let value;
|
let value;
|
||||||
if (Array.isArray(geometry)) {
|
if (Array.isArray(geometry)) {
|
||||||
if (context.dataProjection) {
|
value = transformExtentWithOptions(/** @type {import("../extent.js").Extent} */ (geometry), context);
|
||||||
value = transformExtent(
|
|
||||||
geometry, context.featureProjection, context.dataProjection);
|
|
||||||
} else {
|
|
||||||
value = geometry;
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
value = transformWithOptions(/** @type {import("../geom/Geometry.js").default} */ (geometry), true, context);
|
value = transformGeometryWithOptions(/** @type {import("../geom/Geometry.js").default} */ (geometry), true, context);
|
||||||
}
|
}
|
||||||
pushSerializeAndPop(/** @type {import("../xml.js").NodeStackItem} */
|
pushSerializeAndPop(/** @type {import("../xml.js").NodeStackItem} */
|
||||||
(item), this.GEOMETRY_SERIALIZERS_,
|
(item), this.GEOMETRY_SERIALIZERS_,
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
*/
|
*/
|
||||||
import {extend} from '../array.js';
|
import {extend} from '../array.js';
|
||||||
import {createOrUpdate} from '../extent.js';
|
import {createOrUpdate} from '../extent.js';
|
||||||
import {transformWithOptions} from './Feature.js';
|
import {transformExtentWithOptions, transformGeometryWithOptions} from './Feature.js';
|
||||||
import GMLBase, {GMLNS} from './GMLBase.js';
|
import GMLBase, {GMLNS} from './GMLBase.js';
|
||||||
import {readNonNegativeIntegerString, writeStringTextNode} from './xsd.js';
|
import {readNonNegativeIntegerString, writeStringTextNode} from './xsd.js';
|
||||||
import GeometryLayout from '../geom/GeometryLayout.js';
|
import GeometryLayout from '../geom/GeometryLayout.js';
|
||||||
@@ -12,7 +12,7 @@ import MultiLineString from '../geom/MultiLineString.js';
|
|||||||
import MultiPolygon from '../geom/MultiPolygon.js';
|
import MultiPolygon from '../geom/MultiPolygon.js';
|
||||||
import Polygon from '../geom/Polygon.js';
|
import Polygon from '../geom/Polygon.js';
|
||||||
import {assign} from '../obj.js';
|
import {assign} from '../obj.js';
|
||||||
import {get as getProjection, transformExtent} from '../proj.js';
|
import {get as getProjection} from '../proj.js';
|
||||||
import {createElementNS, getAllTextContent, makeArrayPusher, makeChildAppender,
|
import {createElementNS, getAllTextContent, makeArrayPusher, makeChildAppender,
|
||||||
makeReplacer, makeSimpleNodeFactory, OBJECT_PROPERTY_NODE_FACTORY, parseNode,
|
makeReplacer, makeSimpleNodeFactory, OBJECT_PROPERTY_NODE_FACTORY, parseNode,
|
||||||
pushParseAndPop, pushSerializeAndPop, XML_SCHEMA_INSTANCE_URI} from '../xml.js';
|
pushParseAndPop, pushSerializeAndPop, XML_SCHEMA_INSTANCE_URI} from '../xml.js';
|
||||||
@@ -733,14 +733,9 @@ class GML3 extends GMLBase {
|
|||||||
item['node'] = node;
|
item['node'] = node;
|
||||||
let value;
|
let value;
|
||||||
if (Array.isArray(geometry)) {
|
if (Array.isArray(geometry)) {
|
||||||
if (context.dataProjection) {
|
value = transformExtentWithOptions(/** @type {import("../extent.js").Extent} */ (geometry), context);
|
||||||
value = transformExtent(
|
|
||||||
geometry, context.featureProjection, context.dataProjection);
|
|
||||||
} else {
|
|
||||||
value = geometry;
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
value = transformWithOptions(/** @type {import("../geom/Geometry.js").default} */ (geometry), true, context);
|
value = transformGeometryWithOptions(/** @type {import("../geom/Geometry.js").default} */ (geometry), true, context);
|
||||||
}
|
}
|
||||||
pushSerializeAndPop(/** @type {import("../xml.js").NodeStackItem} */
|
pushSerializeAndPop(/** @type {import("../xml.js").NodeStackItem} */
|
||||||
(item), this.GEOMETRY_SERIALIZERS_,
|
(item), this.GEOMETRY_SERIALIZERS_,
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
// envelopes/extents, only geometries!
|
// envelopes/extents, only geometries!
|
||||||
import {extend} from '../array.js';
|
import {extend} from '../array.js';
|
||||||
import Feature from '../Feature.js';
|
import Feature from '../Feature.js';
|
||||||
import {transformWithOptions} from './Feature.js';
|
import {transformGeometryWithOptions, transformExtentWithOptions} from './Feature.js';
|
||||||
import XMLFeature from './XMLFeature.js';
|
import XMLFeature from './XMLFeature.js';
|
||||||
import GeometryLayout from '../geom/GeometryLayout.js';
|
import GeometryLayout from '../geom/GeometryLayout.js';
|
||||||
import LineString from '../geom/LineString.js';
|
import LineString from '../geom/LineString.js';
|
||||||
@@ -216,18 +216,19 @@ class GMLBase extends XMLFeature {
|
|||||||
/**
|
/**
|
||||||
* @param {Element} node Node.
|
* @param {Element} node Node.
|
||||||
* @param {Array<*>} objectStack Object stack.
|
* @param {Array<*>} objectStack Object stack.
|
||||||
* @return {import("../geom/Geometry.js").default|undefined} Geometry.
|
* @return {import("../geom/Geometry.js").default|import("../extent.js").Extent|undefined} Geometry.
|
||||||
*/
|
*/
|
||||||
readGeometryElement(node, objectStack) {
|
readGeometryElement(node, objectStack) {
|
||||||
const context = /** @type {Object} */ (objectStack[0]);
|
const context = /** @type {Object} */ (objectStack[0]);
|
||||||
context['srsName'] = node.firstElementChild.getAttribute('srsName');
|
context['srsName'] = node.firstElementChild.getAttribute('srsName');
|
||||||
context['srsDimension'] = node.firstElementChild.getAttribute('srsDimension');
|
context['srsDimension'] = node.firstElementChild.getAttribute('srsDimension');
|
||||||
/** @type {import("../geom/Geometry.js").default} */
|
|
||||||
const geometry = pushParseAndPop(null, this.GEOMETRY_PARSERS, node, objectStack, this);
|
const geometry = pushParseAndPop(null, this.GEOMETRY_PARSERS, node, objectStack, this);
|
||||||
if (geometry) {
|
if (geometry) {
|
||||||
return (
|
if (Array.isArray(geometry)) {
|
||||||
/** @type {import("../geom/Geometry.js").default} */ (transformWithOptions(geometry, false, context))
|
return transformExtentWithOptions(/** @type {import("../extent.js").Extent} */ (geometry), context);
|
||||||
);
|
} else {
|
||||||
|
return transformGeometryWithOptions(/** @type {import("../geom/Geometry.js").default} */ (geometry), false, context);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
*/
|
*/
|
||||||
import Feature from '../Feature.js';
|
import Feature from '../Feature.js';
|
||||||
import {includes} from '../array.js';
|
import {includes} from '../array.js';
|
||||||
import {transformWithOptions} from './Feature.js';
|
import {transformGeometryWithOptions} from './Feature.js';
|
||||||
import XMLFeature from './XMLFeature.js';
|
import XMLFeature from './XMLFeature.js';
|
||||||
import {readString, readDecimal, readNonNegativeInteger, readDateTime, writeStringTextNode, writeNonNegativeIntegerTextNode, writeDecimalTextNode, writeDateTimeTextNode} from './xsd.js';
|
import {readString, readDecimal, readNonNegativeInteger, readDateTime, writeStringTextNode, writeNonNegativeIntegerTextNode, writeDecimalTextNode, writeDateTimeTextNode} from './xsd.js';
|
||||||
import GeometryLayout from '../geom/GeometryLayout.js';
|
import GeometryLayout from '../geom/GeometryLayout.js';
|
||||||
@@ -649,7 +649,7 @@ function readRte(node, objectStack) {
|
|||||||
delete values['layoutOptions'];
|
delete values['layoutOptions'];
|
||||||
const layout = applyLayoutOptions(layoutOptions, flatCoordinates);
|
const layout = applyLayoutOptions(layoutOptions, flatCoordinates);
|
||||||
const geometry = new LineString(flatCoordinates, layout);
|
const geometry = new LineString(flatCoordinates, layout);
|
||||||
transformWithOptions(geometry, false, options);
|
transformGeometryWithOptions(geometry, false, options);
|
||||||
const feature = new Feature(geometry);
|
const feature = new Feature(geometry);
|
||||||
feature.setProperties(values);
|
feature.setProperties(values);
|
||||||
return feature;
|
return feature;
|
||||||
@@ -680,7 +680,7 @@ function readTrk(node, objectStack) {
|
|||||||
delete values['layoutOptions'];
|
delete values['layoutOptions'];
|
||||||
const layout = applyLayoutOptions(layoutOptions, flatCoordinates, ends);
|
const layout = applyLayoutOptions(layoutOptions, flatCoordinates, ends);
|
||||||
const geometry = new MultiLineString(flatCoordinates, layout, ends);
|
const geometry = new MultiLineString(flatCoordinates, layout, ends);
|
||||||
transformWithOptions(geometry, false, options);
|
transformGeometryWithOptions(geometry, false, options);
|
||||||
const feature = new Feature(geometry);
|
const feature = new Feature(geometry);
|
||||||
feature.setProperties(values);
|
feature.setProperties(values);
|
||||||
return feature;
|
return feature;
|
||||||
@@ -702,7 +702,7 @@ function readWpt(node, objectStack) {
|
|||||||
const coordinates = appendCoordinate([], layoutOptions, node, values);
|
const coordinates = appendCoordinate([], layoutOptions, node, values);
|
||||||
const layout = applyLayoutOptions(layoutOptions, coordinates);
|
const layout = applyLayoutOptions(layoutOptions, coordinates);
|
||||||
const geometry = new Point(coordinates, layout);
|
const geometry = new Point(coordinates, layout);
|
||||||
transformWithOptions(geometry, false, options);
|
transformGeometryWithOptions(geometry, false, options);
|
||||||
const feature = new Feature(geometry);
|
const feature = new Feature(geometry);
|
||||||
feature.setProperties(values);
|
feature.setProperties(values);
|
||||||
return feature;
|
return feature;
|
||||||
@@ -784,7 +784,7 @@ function writeRte(node, feature, objectStack) {
|
|||||||
context['properties'] = properties;
|
context['properties'] = properties;
|
||||||
const geometry = feature.getGeometry();
|
const geometry = feature.getGeometry();
|
||||||
if (geometry.getType() == GeometryType.LINE_STRING) {
|
if (geometry.getType() == GeometryType.LINE_STRING) {
|
||||||
const lineString = /** @type {LineString} */ (transformWithOptions(geometry, true, options));
|
const lineString = /** @type {LineString} */ (transformGeometryWithOptions(geometry, true, options));
|
||||||
context['geometryLayout'] = lineString.getLayout();
|
context['geometryLayout'] = lineString.getLayout();
|
||||||
properties['rtept'] = lineString.getCoordinates();
|
properties['rtept'] = lineString.getCoordinates();
|
||||||
}
|
}
|
||||||
@@ -810,7 +810,7 @@ function writeTrk(node, feature, objectStack) {
|
|||||||
context['properties'] = properties;
|
context['properties'] = properties;
|
||||||
const geometry = feature.getGeometry();
|
const geometry = feature.getGeometry();
|
||||||
if (geometry.getType() == GeometryType.MULTI_LINE_STRING) {
|
if (geometry.getType() == GeometryType.MULTI_LINE_STRING) {
|
||||||
const multiLineString = /** @type {MultiLineString} */ (transformWithOptions(geometry, true, options));
|
const multiLineString = /** @type {MultiLineString} */ (transformGeometryWithOptions(geometry, true, options));
|
||||||
properties['trkseg'] = multiLineString.getLineStrings();
|
properties['trkseg'] = multiLineString.getLineStrings();
|
||||||
}
|
}
|
||||||
const parentNode = objectStack[objectStack.length - 1].node;
|
const parentNode = objectStack[objectStack.length - 1].node;
|
||||||
@@ -849,7 +849,7 @@ function writeWpt(node, feature, objectStack) {
|
|||||||
context['properties'] = feature.getProperties();
|
context['properties'] = feature.getProperties();
|
||||||
const geometry = feature.getGeometry();
|
const geometry = feature.getGeometry();
|
||||||
if (geometry.getType() == GeometryType.POINT) {
|
if (geometry.getType() == GeometryType.POINT) {
|
||||||
const point = /** @type {Point} */ (transformWithOptions(geometry, true, options));
|
const point = /** @type {Point} */ (transformGeometryWithOptions(geometry, true, options));
|
||||||
context['geometryLayout'] = point.getLayout();
|
context['geometryLayout'] = point.getLayout();
|
||||||
writeWptType(node, point.getCoordinates(), objectStack);
|
writeWptType(node, point.getCoordinates(), objectStack);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
import {assert} from '../asserts.js';
|
import {assert} from '../asserts.js';
|
||||||
import Feature from '../Feature.js';
|
import Feature from '../Feature.js';
|
||||||
import {transformWithOptions} from './Feature.js';
|
import {transformGeometryWithOptions} from './Feature.js';
|
||||||
import JSONFeature from './JSONFeature.js';
|
import JSONFeature from './JSONFeature.js';
|
||||||
import GeometryCollection from '../geom/GeometryCollection.js';
|
import GeometryCollection from '../geom/GeometryCollection.js';
|
||||||
import LineString from '../geom/LineString.js';
|
import LineString from '../geom/LineString.js';
|
||||||
@@ -293,7 +293,7 @@ function readGeometry(object, opt_options) {
|
|||||||
throw new Error('Unsupported GeoJSON type: ' + object.type);
|
throw new Error('Unsupported GeoJSON type: ' + object.type);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return /** @type {import("../geom/Geometry.js").default} */ (transformWithOptions(geometry, false, opt_options));
|
return transformGeometryWithOptions(geometry, false, opt_options);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -375,7 +375,7 @@ function readPolygonGeometry(object) {
|
|||||||
* @return {GeoJSONGeometry} GeoJSON geometry.
|
* @return {GeoJSONGeometry} GeoJSON geometry.
|
||||||
*/
|
*/
|
||||||
function writeGeometry(geometry, opt_options) {
|
function writeGeometry(geometry, opt_options) {
|
||||||
geometry = /** @type {import("../geom/Geometry.js").default} */ (transformWithOptions(geometry, true, opt_options));
|
geometry = transformGeometryWithOptions(geometry, true, opt_options);
|
||||||
const type = geometry.getType();
|
const type = geometry.getType();
|
||||||
|
|
||||||
/** @type {GeoJSONGeometry} */
|
/** @type {GeoJSONGeometry} */
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
* @module ol/format/IGC
|
* @module ol/format/IGC
|
||||||
*/
|
*/
|
||||||
import Feature from '../Feature.js';
|
import Feature from '../Feature.js';
|
||||||
import {transformWithOptions} from './Feature.js';
|
import {transformGeometryWithOptions} from './Feature.js';
|
||||||
import TextFeature from './TextFeature.js';
|
import TextFeature from './TextFeature.js';
|
||||||
import GeometryLayout from '../geom/GeometryLayout.js';
|
import GeometryLayout from '../geom/GeometryLayout.js';
|
||||||
import LineString from '../geom/LineString.js';
|
import LineString from '../geom/LineString.js';
|
||||||
@@ -158,7 +158,7 @@ class IGC extends TextFeature {
|
|||||||
}
|
}
|
||||||
const layout = altitudeMode == IGCZ.NONE ? GeometryLayout.XYM : GeometryLayout.XYZM;
|
const layout = altitudeMode == IGCZ.NONE ? GeometryLayout.XYM : GeometryLayout.XYZM;
|
||||||
const lineString = new LineString(flatCoordinates, layout);
|
const lineString = new LineString(flatCoordinates, layout);
|
||||||
const feature = new Feature(transformWithOptions(lineString, false, opt_options));
|
const feature = new Feature(transformGeometryWithOptions(lineString, false, opt_options));
|
||||||
feature.setProperties(properties);
|
feature.setProperties(properties);
|
||||||
return feature;
|
return feature;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import Feature from '../Feature.js';
|
|||||||
import {extend, includes} from '../array.js';
|
import {extend, includes} from '../array.js';
|
||||||
import {assert} from '../asserts.js';
|
import {assert} from '../asserts.js';
|
||||||
import {asArray} from '../color.js';
|
import {asArray} from '../color.js';
|
||||||
import {transformWithOptions} from './Feature.js';
|
import {transformGeometryWithOptions} from './Feature.js';
|
||||||
import XMLFeature from './XMLFeature.js';
|
import XMLFeature from './XMLFeature.js';
|
||||||
import {readDecimal, readBoolean, readString, writeStringTextNode, writeCDATASection, writeDecimalTextNode, writeBooleanTextNode} from './xsd.js';
|
import {readDecimal, readBoolean, readString, writeStringTextNode, writeCDATASection, writeDecimalTextNode, writeBooleanTextNode} from './xsd.js';
|
||||||
import GeometryCollection from '../geom/GeometryCollection.js';
|
import GeometryCollection from '../geom/GeometryCollection.js';
|
||||||
@@ -500,7 +500,7 @@ class KML extends XMLFeature {
|
|||||||
|
|
||||||
const geometry = object['geometry'];
|
const geometry = object['geometry'];
|
||||||
if (geometry) {
|
if (geometry) {
|
||||||
transformWithOptions(geometry, false, options);
|
transformGeometryWithOptions(geometry, false, options);
|
||||||
}
|
}
|
||||||
feature.setGeometry(geometry);
|
feature.setGeometry(geometry);
|
||||||
delete object['geometry'];
|
delete object['geometry'];
|
||||||
@@ -2717,7 +2717,7 @@ function writePlacemark(node, feature, objectStack) {
|
|||||||
const options = /** @type {import("./Feature.js").WriteOptions} */ (objectStack[0]);
|
const options = /** @type {import("./Feature.js").WriteOptions} */ (objectStack[0]);
|
||||||
let geometry = feature.getGeometry();
|
let geometry = feature.getGeometry();
|
||||||
if (geometry) {
|
if (geometry) {
|
||||||
geometry = /** @type {import("../geom/Geometry.js").default} */ (transformWithOptions(geometry, true, options));
|
geometry = transformGeometryWithOptions(geometry, true, options);
|
||||||
}
|
}
|
||||||
pushSerializeAndPop(context, PLACEMARK_SERIALIZERS,
|
pushSerializeAndPop(context, PLACEMARK_SERIALIZERS,
|
||||||
GEOMETRY_NODE_FACTORY, [geometry], objectStack);
|
GEOMETRY_NODE_FACTORY, [geometry], objectStack);
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
import {assert} from '../asserts.js';
|
import {assert} from '../asserts.js';
|
||||||
import PBF from 'pbf';
|
import PBF from 'pbf';
|
||||||
import FeatureFormat, {transformWithOptions} from './Feature.js';
|
import FeatureFormat, {transformGeometryWithOptions} from './Feature.js';
|
||||||
import FormatType from './FormatType.js';
|
import FormatType from './FormatType.js';
|
||||||
import GeometryLayout from '../geom/GeometryLayout.js';
|
import GeometryLayout from '../geom/GeometryLayout.js';
|
||||||
import GeometryType from '../geom/GeometryType.js';
|
import GeometryType from '../geom/GeometryType.js';
|
||||||
@@ -214,8 +214,7 @@ class MVT extends FeatureFormat {
|
|||||||
if (this.geometryName_) {
|
if (this.geometryName_) {
|
||||||
feature.setGeometryName(this.geometryName_);
|
feature.setGeometryName(this.geometryName_);
|
||||||
}
|
}
|
||||||
const geometry = /** @type {import("../geom/Geometry.js").default} */ (transformWithOptions(geom, false,
|
const geometry = transformGeometryWithOptions(geom, false, this.adaptOptions(opt_options));
|
||||||
this.adaptOptions(opt_options)));
|
|
||||||
feature.setGeometry(geometry);
|
feature.setGeometry(geometry);
|
||||||
feature.setId(id);
|
feature.setId(id);
|
||||||
feature.setProperties(values);
|
feature.setProperties(values);
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
// FIXME add typedef for stack state objects
|
// FIXME add typedef for stack state objects
|
||||||
import {extend} from '../array.js';
|
import {extend} from '../array.js';
|
||||||
import Feature from '../Feature.js';
|
import Feature from '../Feature.js';
|
||||||
import {transformWithOptions} from './Feature.js';
|
import {transformGeometryWithOptions} from './Feature.js';
|
||||||
import XMLFeature from './XMLFeature.js';
|
import XMLFeature from './XMLFeature.js';
|
||||||
import GeometryLayout from '../geom/GeometryLayout.js';
|
import GeometryLayout from '../geom/GeometryLayout.js';
|
||||||
import LineString from '../geom/LineString.js';
|
import LineString from '../geom/LineString.js';
|
||||||
@@ -88,7 +88,7 @@ class OSMXML extends XMLFeature {
|
|||||||
} else {
|
} else {
|
||||||
geometry = new LineString(flatCoordinates, GeometryLayout.XY);
|
geometry = new LineString(flatCoordinates, GeometryLayout.XY);
|
||||||
}
|
}
|
||||||
transformWithOptions(geometry, false, options);
|
transformGeometryWithOptions(geometry, false, options);
|
||||||
const feature = new Feature(geometry);
|
const feature = new Feature(geometry);
|
||||||
feature.setId(values.id);
|
feature.setId(values.id);
|
||||||
feature.setProperties(values.tags);
|
feature.setProperties(values.tags);
|
||||||
@@ -134,7 +134,7 @@ function readNode(node, objectStack) {
|
|||||||
}, NODE_PARSERS, node, objectStack);
|
}, NODE_PARSERS, node, objectStack);
|
||||||
if (!isEmpty(values.tags)) {
|
if (!isEmpty(values.tags)) {
|
||||||
const geometry = new Point(coordinates);
|
const geometry = new Point(coordinates);
|
||||||
transformWithOptions(geometry, false, options);
|
transformGeometryWithOptions(geometry, false, options);
|
||||||
const feature = new Feature(geometry);
|
const feature = new Feature(geometry);
|
||||||
feature.setId(id);
|
feature.setId(id);
|
||||||
feature.setProperties(values.tags);
|
feature.setProperties(values.tags);
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
*/
|
*/
|
||||||
import {assert} from '../asserts.js';
|
import {assert} from '../asserts.js';
|
||||||
import Feature from '../Feature.js';
|
import Feature from '../Feature.js';
|
||||||
import {transformWithOptions} from './Feature.js';
|
import {transformGeometryWithOptions} from './Feature.js';
|
||||||
import TextFeature from './TextFeature.js';
|
import TextFeature from './TextFeature.js';
|
||||||
import GeometryLayout from '../geom/GeometryLayout.js';
|
import GeometryLayout from '../geom/GeometryLayout.js';
|
||||||
import LineString from '../geom/LineString.js';
|
import LineString from '../geom/LineString.js';
|
||||||
@@ -89,14 +89,9 @@ class Polyline extends TextFeature {
|
|||||||
const flatCoordinates = decodeDeltas(text, stride, this.factor_);
|
const flatCoordinates = decodeDeltas(text, stride, this.factor_);
|
||||||
flipXY(flatCoordinates, 0, flatCoordinates.length, stride, flatCoordinates);
|
flipXY(flatCoordinates, 0, flatCoordinates.length, stride, flatCoordinates);
|
||||||
const coordinates = inflateCoordinates(flatCoordinates, 0, flatCoordinates.length, stride);
|
const coordinates = inflateCoordinates(flatCoordinates, 0, flatCoordinates.length, stride);
|
||||||
|
const lineString = new LineString(coordinates, this.geometryLayout_);
|
||||||
|
|
||||||
return (
|
return transformGeometryWithOptions(lineString, false, this.adaptOptions(opt_options));
|
||||||
/** @type {import("../geom/Geometry.js").default} */ (transformWithOptions(
|
|
||||||
new LineString(coordinates, this.geometryLayout_),
|
|
||||||
false,
|
|
||||||
this.adaptOptions(opt_options)
|
|
||||||
))
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -124,7 +119,7 @@ class Polyline extends TextFeature {
|
|||||||
*/
|
*/
|
||||||
writeGeometryText(geometry, opt_options) {
|
writeGeometryText(geometry, opt_options) {
|
||||||
geometry = /** @type {LineString} */
|
geometry = /** @type {LineString} */
|
||||||
(transformWithOptions(geometry, true, this.adaptOptions(opt_options)));
|
(transformGeometryWithOptions(geometry, true, this.adaptOptions(opt_options)));
|
||||||
const flatCoordinates = geometry.getFlatCoordinates();
|
const flatCoordinates = geometry.getFlatCoordinates();
|
||||||
const stride = geometry.getStride();
|
const stride = geometry.getStride();
|
||||||
flipXY(flatCoordinates, 0, flatCoordinates.length, stride, flatCoordinates);
|
flipXY(flatCoordinates, 0, flatCoordinates.length, stride, flatCoordinates);
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
* @module ol/format/TopoJSON
|
* @module ol/format/TopoJSON
|
||||||
*/
|
*/
|
||||||
import Feature from '../Feature.js';
|
import Feature from '../Feature.js';
|
||||||
import {transformWithOptions} from './Feature.js';
|
import {transformGeometryWithOptions} from './Feature.js';
|
||||||
import JSONFeature from './JSONFeature.js';
|
import JSONFeature from './JSONFeature.js';
|
||||||
import LineString from '../geom/LineString.js';
|
import LineString from '../geom/LineString.js';
|
||||||
import MultiLineString from '../geom/MultiLineString.js';
|
import MultiLineString from '../geom/MultiLineString.js';
|
||||||
@@ -338,8 +338,7 @@ function readFeatureFromGeometry(object, arcs, scale, translate, property, name,
|
|||||||
geometry = geometryReader(object, arcs);
|
geometry = geometryReader(object, arcs);
|
||||||
}
|
}
|
||||||
const feature = new Feature();
|
const feature = new Feature();
|
||||||
feature.setGeometry(/** @type {import("../geom/Geometry.js").default} */ (
|
feature.setGeometry(transformGeometryWithOptions(geometry, false, opt_options));
|
||||||
transformWithOptions(geometry, false, opt_options)));
|
|
||||||
if (object.id !== undefined) {
|
if (object.id !== undefined) {
|
||||||
feature.setId(object.id);
|
feature.setId(object.id);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
* @module ol/format/WKT
|
* @module ol/format/WKT
|
||||||
*/
|
*/
|
||||||
import Feature from '../Feature.js';
|
import Feature from '../Feature.js';
|
||||||
import {transformWithOptions} from './Feature.js';
|
import {transformGeometryWithOptions} from './Feature.js';
|
||||||
import TextFeature from './TextFeature.js';
|
import TextFeature from './TextFeature.js';
|
||||||
import GeometryCollection from '../geom/GeometryCollection.js';
|
import GeometryCollection from '../geom/GeometryCollection.js';
|
||||||
import GeometryType from '../geom/GeometryType.js';
|
import GeometryType from '../geom/GeometryType.js';
|
||||||
@@ -682,9 +682,7 @@ class WKT extends TextFeature {
|
|||||||
readGeometryFromText(text, opt_options) {
|
readGeometryFromText(text, opt_options) {
|
||||||
const geometry = this.parse_(text);
|
const geometry = this.parse_(text);
|
||||||
if (geometry) {
|
if (geometry) {
|
||||||
return (
|
return transformGeometryWithOptions(geometry, false, opt_options);
|
||||||
/** @type {import("../geom/Geometry.js").default} */ (transformWithOptions(geometry, false, opt_options))
|
|
||||||
);
|
|
||||||
} else {
|
} else {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@@ -721,7 +719,7 @@ class WKT extends TextFeature {
|
|||||||
*/
|
*/
|
||||||
writeGeometryText(geometry, opt_options) {
|
writeGeometryText(geometry, opt_options) {
|
||||||
return encode(/** @type {import("../geom/Geometry.js").default} */ (
|
return encode(/** @type {import("../geom/Geometry.js").default} */ (
|
||||||
transformWithOptions(geometry, true, opt_options)));
|
transformGeometryWithOptions(geometry, true, opt_options)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user