本文整理匯總了TypeScript中@turf/line-intersect.default函數的典型用法代碼示例。如果您正苦於以下問題:TypeScript default函數的具體用法?TypeScript default怎麽用?TypeScript default使用的例子?那麽, 這裏精選的函數代碼示例或許可以為您提供幫助。
在下文中一共展示了default函數的10個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的TypeScript代碼示例。
示例1: booleanValid
/**
* booleanValid checks if the geometry is a valid according to the OGC Simple Feature Specification.
*
* @name booleanValid
* @param {Geometry|Feature<any>} feature GeoJSON Feature or Geometry
* @returns {boolean} true/false
* @example
* var line = turf.lineString([[1, 1], [1, 2], [1, 3], [1, 4]]);
*
* turf.booleanValid(line); // => true
* turf.booleanValid({foo: "bar"}); // => false
*/
export default function booleanValid(feature: Feature<any> | Geometry) {
// Automatic False
if (!feature.type) return false;
// Parse GeoJSON
const geom = getGeom(feature);
const type = geom.type;
const coords = geom.coordinates;
switch (type) {
case 'Point':
return coords.length > 1;
case 'MultiPoint':
for (var i = 0; i < coords.length; i++) {
if (coords[i].length < 2) return false;
}
return true;
case 'LineString':
if (coords.length < 2) return false
for (var i = 0; i < coords.length; i++) {
if (coords[i].length < 2) return false;
}
return true;
case 'MultiLineString':
if (coords.length < 2) return false
for (var i = 0; i < coords.length; i++) {
if (coords[i].length < 2) return false;
}
return true;
case 'Polygon':
for (var i = 0; i < geom.coordinates.length; i++) {
if (coords[i].length < 4) return false
if (!checkRingsClose(coords[i])) return false
if (checkRingsForSpikesPunctures(coords[i])) return false
if (i > 0) {
if (lineIntersect(polygon([coords[0]]), polygon([coords[i]])).features.length > 1) return false
}
}
return true
case 'MultiPolygon':
for (var i = 0; i < geom.coordinates.length; i++) {
var poly: any = geom.coordinates[i];
for (var ii = 0; ii < poly.length; ii++) {
if (poly[ii].length < 4) return false
if (!checkRingsClose(poly[ii])) return false
if (checkRingsForSpikesPunctures(poly[ii])) return false
if (ii === 0) {
if (!checkPolygonAgainstOthers(poly, geom.coordinates, i)) return false
}
if (ii > 0) {
if (lineIntersect(polygon([poly[0]]), polygon([poly[ii]])).features.length > 1) return false
}
}
}
return true
default: return false;
}
}
示例2: isLineOnLine
function isLineOnLine(lineString1, lineString2) {
var doLinesIntersect = lineIntersect(lineString1, lineString2);
if (doLinesIntersect.features.length > 0) {
return true;
}
return false;
}
示例3: doLineStringAndPolygonCross
function doLineStringAndPolygonCross(lineString, polygon: Polygon) {
const line: any = polygonToLine(polygon);
const doLinesIntersect = lineIntersect(lineString, line);
if (doLinesIntersect.features.length > 0) {
return true;
}
return false;
}
示例4: isLineInPoly
function isLineInPoly(polygon, lineString) {
for (var i = 0; i < lineString.coordinates.length; i++) {
if (booleanPointInPolygon(lineString.coordinates[i], polygon)) {
return true;
}
}
var doLinesIntersect = lineIntersect(lineString, polygonToLine(polygon));
if (doLinesIntersect.features.length > 0) {
return true;
}
return false;
}
示例5: isLineInPoly
function isLineInPoly(polygon: Polygon, lineString: LineString) {
for (const coord of lineString.coordinates) {
if (booleanPointInPolygon(coord, polygon)) {
return true;
}
}
const doLinesIntersect = lineIntersect(lineString, polygonToLine(polygon));
if (doLinesIntersect.features.length > 0) {
return true;
}
return false;
}
示例6: flattenEach
flattenEach(lines, function (line: any) {
const coords: any = getCoords(line);
for (let i = 0; i < coords.length - 1; i++) {
//start
const start = point(coords[i]);
start.properties.dist = distance(pt, start, options);
//stop
const stop = point(coords[i + 1]);
stop.properties.dist = distance(pt, stop, options);
// sectionLength
const sectionLength = distance(start, stop, options);
//perpendicular
const heightDistance = Math.max(start.properties.dist, stop.properties.dist);
const direction = bearing(start, stop);
const perpendicularPt1 = destination(pt, heightDistance, direction + 90, options);
const perpendicularPt2 = destination(pt, heightDistance, direction - 90, options);
const intersect = lineIntersects(
lineString([perpendicularPt1.geometry.coordinates, perpendicularPt2.geometry.coordinates]),
lineString([start.geometry.coordinates, stop.geometry.coordinates])
);
let intersectPt = null;
if (intersect.features.length > 0) {
intersectPt = intersect.features[0];
intersectPt.properties.dist = distance(pt, intersectPt, options);
intersectPt.properties.location = length + distance(start, intersectPt, options);
}
if (start.properties.dist < closestPt.properties.dist) {
closestPt = start;
closestPt.properties.index = i;
closestPt.properties.location = length;
}
if (stop.properties.dist < closestPt.properties.dist) {
closestPt = stop;
closestPt.properties.index = i + 1;
closestPt.properties.location = length + sectionLength;
}
if (intersectPt && intersectPt.properties.dist < closestPt.properties.dist) {
closestPt = intersectPt;
closestPt.properties.index = i;
}
// update length
length += sectionLength;
}
});
示例7: isPolyInPoly
/**
* Is Polygon (geom1) in Polygon (geom2)
* Only takes into account outer rings
* See http://stackoverflow.com/a/4833823/1979085
*
* @private
* @param {Geometry|Feature<Polygon>} feature1 Polygon1
* @param {Geometry|Feature<Polygon>} feature2 Polygon2
* @returns {boolean} true/false
*/
function isPolyInPoly(feature1, feature2) {
for (var i = 0; i < feature1.coordinates[0].length; i++) {
if (booleanPointInPolygon(feature1.coordinates[0][i], feature2)) {
return true;
}
}
for (var i2 = 0; i2 < feature2.coordinates[0].length; i2++) {
if (booleanPointInPolygon(feature2.coordinates[0][i2], feature1)) {
return true;
}
}
var doLinesIntersect = lineIntersect(polygonToLine(feature1), polygonToLine(feature2));
if (doLinesIntersect.features.length > 0) {
return true;
}
return false;
}
示例8: isPolyInPoly
/**
* Is Polygon (geom1) in Polygon (geom2)
* Only takes into account outer rings
* See http://stackoverflow.com/a/4833823/1979085
*
* @private
* @param {Geometry|Feature<Polygon>} feature1 Polygon1
* @param {Geometry|Feature<Polygon>} feature2 Polygon2
* @returns {boolean} true/false
*/
function isPolyInPoly(feature1: Polygon, feature2: Polygon) {
for (const coord1 of feature1.coordinates[0]) {
if (booleanPointInPolygon(coord1, feature2)) {
return true;
}
}
for (const coord2 of feature2.coordinates[0]) {
if (booleanPointInPolygon(coord2, feature1)) {
return true;
}
}
const doLinesIntersect = lineIntersect(polygonToLine(feature1), polygonToLine(feature2));
if (doLinesIntersect.features.length > 0) {
return true;
}
return false;
}
示例9: doLineStringsCross
function doLineStringsCross(lineString1, lineString2) {
var doLinesIntersect = lineIntersect(lineString1, lineString2);
if (doLinesIntersect.features.length > 0) {
for (var i = 0; i < lineString1.coordinates.length - 1; i++) {
for (var i2 = 0; i2 < lineString2.coordinates.length - 1; i2++) {
var incEndVertices = true;
if (i2 === 0 || i2 === lineString2.coordinates.length - 2) {
incEndVertices = false;
}
if (isPointOnLineSegment(lineString1.coordinates[i], lineString1.coordinates[i + 1], lineString2.coordinates[i2], incEndVertices)) {
return true;
}
}
}
}
return false;
}
示例10: segmentEach
segmentEach(feature2, (segment2) => {
if (lineIntersect(segment1, segment2).features.length) overlap++;
});