christian@0: /* christian@0: * Postarc christian@0: * christian@0: * Author: christian@0: * Christian Lins christian@0: * christian@0: * Copyright: christian@0: * Copyright (C) 2012 Intevation GmbH christian@0: * christian@0: * This program is free software: you can redistribute it and/or modify christian@0: * it under the terms of the GNU Lesser General Public License as published by christian@0: * the Free Software Foundation, either version 3 of the License, or christian@0: * (at your option) any later version. christian@0: * christian@0: * This program is distributed in the hope that it will be useful, christian@0: * but WITHOUT ANY WARRANTY; without even the implied warranty of christian@0: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the christian@0: * GNU General Public License for more details. christian@0: * christian@0: * You should have received a copy of the GNU Lesser General Public License christian@0: * along with this program. If not, see . christian@0: */ christian@0: christian@0: using System; christian@0: using System.Collections.Generic; christian@0: using System.Linq; christian@0: using System.Text; christian@0: using ESRI.ArcGIS.Geometry; christian@0: using NpgsqlTypes; christian@0: using System.Globalization; christian@0: using ESRI.ArcGIS.Geodatabase; christian@0: using System.Diagnostics; christian@0: using ESRI.ArcGIS.esriSystem; christian@0: christian@0: namespace Postarc.Feature christian@0: { christian@0: public class Point : christian@0: IWKTGeometry, christian@0: IGeometryDef, christian@0: IPoint, christian@0: IGeometry, christian@0: IGeometry2, christian@0: IGeometry3, christian@0: IGeometry4, christian@0: IGeometry5, christian@0: IClone, christian@0: IConstructPoint, christian@0: IConstructPoint2 christian@0: { christian@0: protected PointClass point = new PointClass(); christian@0: christian@0: public double X christian@0: { christian@0: get christian@0: { christian@0: return this.point.X; christian@0: } christian@0: set christian@0: { christian@0: this.point.X = value; christian@0: } christian@0: } christian@0: christian@0: public double Y christian@0: { christian@0: get christian@0: { christian@0: return this.point.Y; christian@0: } christian@0: set christian@0: { christian@0: this.point.Y = Y; christian@0: } christian@0: } christian@0: christian@0: public double Z christian@0: { christian@0: get christian@0: { christian@0: return point.Z; christian@0: } christian@0: set christian@0: { christian@0: this.point.Z = value; christian@0: } christian@0: } christian@0: christian@0: public Point() christian@0: { christian@0: this.point.SpatialReference = FeatureLayer.CreateGeographicSpatialReference(); christian@0: this.point.PutCoords(0, 0); christian@0: } christian@0: christian@0: public Point(IPoint point) christian@0: { christian@0: this.point.SpatialReference = point.SpatialReference; christian@0: this.point.PutCoords(point.X, point.Y); christian@0: } christian@0: christian@0: /// christian@0: /// Compares X, Y, M, Z, ID (in order) of this point with christian@0: /// otherPoint's respective values. christian@0: /// christian@0: /// christian@0: /// christian@0: /// 0 if equal, 1 if this point is greater, -1 if smaller christian@0: /// christian@0: public int Compare(IPoint otherPoint) christian@0: { christian@0: return this.point.Compare(otherPoint); christian@0: } christian@0: christian@0: public void ConstrainAngle(double constraintAngle, IPoint anchor, bool allowOpposite) christian@0: { christian@0: this.point.ConstrainAngle(constraintAngle, anchor, allowOpposite); christian@0: } christian@0: christian@0: public void ConstrainDistance(double constraintRadius, IPoint anchor) christian@0: { christian@0: this.point.ConstrainDistance(constraintRadius, anchor); christian@0: } christian@0: christian@0: public esriGeometryDimension Dimension christian@0: { christian@0: get christian@0: { christian@0: // A point has no dimension christian@0: return this.point.Dimension; christian@0: } christian@0: } christian@0: christian@0: /// christian@0: /// Creates and returns an envelope of this point. christian@0: /// christian@0: public IEnvelope Envelope christian@0: { christian@0: get christian@0: { christian@0: return this.point.Envelope; christian@0: } christian@0: } christian@0: christian@0: public void GeoNormalize() christian@0: { christian@0: this.point.GeoNormalize(); christian@0: } christian@0: christian@0: public void GeoNormalizeFromLongitude(double longitude) christian@0: { christian@0: this.point.GeoNormalizeFromLongitude(longitude); christian@0: } christian@0: christian@0: public esriGeometryType GeometryType christian@0: { christian@0: get christian@0: { christian@0: return esriGeometryType.esriGeometryPoint; christian@0: } christian@0: } christian@0: christian@0: public int ID christian@0: { christian@0: get christian@0: { christian@0: return this.point.ID; christian@0: } christian@0: set christian@0: { christian@0: this.point.ID = value; christian@0: } christian@0: } christian@0: christian@0: public bool IsEmpty christian@0: { christian@0: get christian@0: { christian@0: return this.point.IsEmpty; christian@0: } christian@0: } christian@0: christian@0: public double M christian@0: { christian@0: get christian@0: { christian@0: return this.point.M; christian@0: } christian@0: set christian@0: { christian@0: this.point.M = value; christian@0: } christian@0: } christian@0: christian@0: public void Project(ISpatialReference newReferenceSystem) christian@0: { christian@0: this.point.Project(newReferenceSystem); christian@0: } christian@0: christian@0: public void PutCoords(double X, double Y) christian@0: { christian@0: this.point.X = X; christian@0: this.point.Y = Y; christian@0: } christian@0: christian@0: public void QueryCoords(out double X, out double Y) christian@0: { christian@0: X = this.X; christian@0: Y = this.Y; christian@0: } christian@0: christian@0: public void SetEmpty() christian@0: { christian@0: this.point.X = 0; christian@0: this.point.Y = 0; christian@0: } christian@0: christian@0: public void SnapToSpatialReference() christian@0: { christian@0: this.point.SnapToSpatialReference(); christian@0: } christian@0: christian@0: public ISpatialReference SpatialReference christian@0: { christian@0: get christian@0: { christian@0: return this.point.SpatialReference; christian@0: } christian@0: set christian@0: { christian@0: Debug.WriteLine("Point::SpatialReference::set"); christian@0: this.point.SpatialReference = value; christian@0: } christian@0: } christian@0: christian@0: public double get_VertexAttribute(esriGeometryAttributes attributeType) christian@0: { christian@0: return this.point.get_VertexAttribute(attributeType); christian@0: } christian@0: christian@0: public void set_VertexAttribute(esriGeometryAttributes attributeType, double attributeValue) christian@0: { christian@0: this.point.set_VertexAttribute(attributeType, attributeValue); christian@0: } christian@0: christian@0: public string GetWKT() christian@0: { christian@0: StringBuilder wkt = new StringBuilder(); christian@0: wkt.Append("POINT("); christian@0: wkt.Append(X.ToString("r", CultureInfo.InvariantCulture)); christian@0: wkt.Append(" "); christian@0: wkt.Append(Y.ToString("r", CultureInfo.InvariantCulture)); christian@0: wkt.Append(")"); christian@0: return wkt.ToString(); christian@0: } christian@0: christian@0: public int AvgNumPoints christian@0: { christian@0: get christian@0: { christian@0: return 1; christian@0: } christian@0: } christian@0: christian@0: public int GridCount christian@0: { christian@0: get christian@0: { christian@0: return 0; christian@0: } christian@0: } christian@0: christian@0: public bool HasM christian@0: { christian@0: get christian@0: { christian@0: return false; christian@0: } christian@0: } christian@0: christian@0: public bool HasZ christian@0: { christian@0: get christian@0: { christian@0: return false; christian@0: } christian@0: } christian@0: christian@0: public double get_GridSize(int index) christian@0: { christian@0: return 0; christian@0: } christian@0: christian@0: christian@0: public void SetWKT(string wkt) christian@0: { christian@0: wkt = wkt.Split(new char[] { '(', ')' })[1]; christian@0: string[] wkts = wkt.Split(' '); christian@0: X = double.Parse(wkts[0]); christian@0: Y = double.Parse(wkts[1]); christian@0: } christian@0: christian@0: christian@0: public void QueryEnvelope(IEnvelope outEnvelope) christian@0: { christian@0: this.point.QueryEnvelope(outEnvelope); christian@0: } christian@0: christian@0: public IPoint CentroidEx christian@0: { christian@0: get { throw new NotImplementedException(); } christian@0: } christian@0: christian@0: public bool Changed christian@0: { christian@0: get christian@0: { christian@0: throw new NotImplementedException(); christian@0: } christian@0: set christian@0: { christian@0: throw new NotImplementedException(); christian@0: } christian@0: } christian@0: christian@0: public void Project5(ISpatialReference newSpatialReference, int ProjectionHint) christian@0: { christian@0: throw new NotImplementedException(); christian@0: } christian@0: christian@0: public void ProjectEx(ISpatialReference newReferenceSystem, esriTransformDirection direction, IGeoTransformation GeoTransformation, bool bAngularDensify, double maxSegmentLength, double maxDeviation) christian@0: { christian@0: throw new NotImplementedException(); christian@0: } christian@0: christian@0: public void ProjectEx5(ISpatialReference newReferenceSystem, esriTransformDirection direction, ITransformation transformation, bool bAngularDensify, double maxSegmentLength, double maxDeviation, int ProjectionHint) christian@0: { christian@0: throw new NotImplementedException(); christian@0: } christian@0: christian@0: public void QueryWKSEnvelope(out ESRI.ArcGIS.esriSystem.WKSEnvelope e) christian@0: { christian@0: throw new NotImplementedException(); christian@0: } christian@0: christian@0: public void Assign(IClone src) christian@0: { christian@0: throw new NotImplementedException(); christian@0: } christian@0: christian@0: public IClone Clone() christian@0: { christian@0: throw new NotImplementedException(); christian@0: } christian@0: christian@0: public bool IsEqual(IClone other) christian@0: { christian@0: throw new NotImplementedException(); christian@0: } christian@0: christian@0: public bool IsIdentical(IClone other) christian@0: { christian@0: throw new NotImplementedException(); christian@0: } christian@0: christian@0: public void ConstructAlong(ICurve curve, esriSegmentExtension extension, double distance, bool asRatio) christian@0: { christian@0: throw new NotImplementedException(); christian@0: } christian@0: christian@0: public void ConstructAngleBisector(IPoint from, IPoint through, IPoint to, double distance, bool useAcuteAngle) christian@0: { christian@0: throw new NotImplementedException(); christian@0: } christian@0: christian@0: public void ConstructAngleDistance(IPoint p, double inAngle, double distance) christian@0: { christian@0: throw new NotImplementedException(); christian@0: } christian@0: christian@0: public void ConstructAngleIntersection(IPoint p1, double angle1, IPoint p2, double angle2) christian@0: { christian@0: throw new NotImplementedException(); christian@0: } christian@0: christian@0: public void ConstructAverage(IPointCollection Points, esriGeometryAttributes attributeType) christian@0: { christian@0: throw new NotImplementedException(); christian@0: } christian@0: christian@0: public void ConstructDeflection(ILine baseLine, double distance, double inAngle) christian@0: { christian@0: throw new NotImplementedException(); christian@0: } christian@0: christian@0: public void ConstructDeflectionIntersection(ILine baseLine, double startAngle, double endAngle, bool OnRightSide) christian@0: { christian@0: throw new NotImplementedException(); christian@0: } christian@0: christian@0: public void ConstructOffset(ICurve curve, esriSegmentExtension extension, double distance, bool asRatio, double Offset) christian@0: { christian@0: throw new NotImplementedException(); christian@0: } christian@0: christian@0: public void ConstructParallel(ISegment Segment, esriSegmentExtension extension, IPoint start, double distance) christian@0: { christian@0: throw new NotImplementedException(); christian@0: } christian@0: christian@0: public void ConstructPerpendicular(ISegment @base, esriSegmentExtension extension, IPoint p, double distance, bool bUseLineOrientation) christian@0: { christian@0: throw new NotImplementedException(); christian@0: } christian@0: christian@0: public void ConstructThreePointResection(IPoint point1, double angleP1P2, IPoint point2, double angleP2P3, IPoint point3, out double arcAngle) christian@0: { christian@0: throw new NotImplementedException(); christian@0: } christian@0: } christian@0: }