public void Filter(CoordinateSequence seq, int i)
            {
                var result = _transform.Transform(new[] { seq.GetOrdinate(i, Ordinate.X), seq.GetOrdinate(i, Ordinate.Y) });

                seq.SetOrdinate(i, Ordinate.X, result[0]);
                seq.SetOrdinate(i, Ordinate.Y, result[1]);
            }
コード例 #2
0
        /// <summary>
        /// Applies this transformation to the i'th coordinate
        /// in the given CoordinateSequence.
        /// </summary>
        /// <param name="seq"> a <code>CoordinateSequence</code></param>
        /// <param name="i"> the index of the coordinate to transform</param>
        public void Transform(CoordinateSequence seq, int i)
        {
            double xp = _m00 * seq.GetOrdinate(i, 0) + _m01 * seq.GetOrdinate(i, 1) + _m02;
            double yp = _m10 * seq.GetOrdinate(i, 0) + _m11 * seq.GetOrdinate(i, 1) + _m12;

            seq.SetOrdinate(i, 0, xp);
            seq.SetOrdinate(i, 1, yp);
        }
コード例 #3
0
            /// <summary>
            ///
            /// </summary>
            /// <param name="seq">The coordinate sequence</param>
            public void Filter(CoordinateSequence seq, int i)
            {
                double xp = seq.GetOrdinate(i, 0) + _trans.X;
                double yp = seq.GetOrdinate(i, 1) + _trans.Y;

                seq.SetOrdinate(i, 0, xp);
                seq.SetOrdinate(i, 1, yp);
            }
コード例 #4
0
 public static void SetCoordinate(this CoordinateSequence self, int index, Coordinate coord)
 {
     self.SetOrdinate(index, Ordinate.X, coord.X);
     self.SetOrdinate(index, Ordinate.Y, coord.Y);
     if (self.Dimension > 2)
     {
         self.SetOrdinate(index, Ordinate.Z, coord.Z);
     }
 }
コード例 #5
0
 private static CoordinateSequence CopyToSequence(Coordinate[] coords, CoordinateSequence sequence)
 {
     for (int i = 0; i < coords.Length; i++)
     {
         sequence.SetOrdinate(i, Ordinate.X, coords[i].X);
         sequence.SetOrdinate(i, Ordinate.Y, coords[i].Y);
     }
     return(sequence);
 }
コード例 #6
0
                private static void FixSpike(CoordinateSequence seq, int fixIndex, int fixWithIndex)
                {
                    seq.SetOrdinate(fixIndex, Ordinate.X, seq.GetOrdinate(fixWithIndex, Ordinate.X));
                    seq.SetOrdinate(fixIndex, Ordinate.Y, seq.GetOrdinate(fixWithIndex, Ordinate.Y));

                    if ((seq.Ordinates & Ordinates.Z) == Ordinates.Z)
                    {
                        seq.SetOrdinate(fixIndex, Ordinate.Z, seq.GetOrdinate(fixWithIndex, Ordinate.Z));
                    }
                    if ((seq.Ordinates & Ordinates.M) == Ordinates.M)
                    {
                        seq.SetOrdinate(fixIndex, Ordinate.M, seq.GetOrdinate(fixWithIndex, Ordinate.M));
                    }
                }
コード例 #7
0
 private static void InitProgression(CoordinateSequence seq)
 {
     for (int index = 0; index < seq.Count; index++)
     {
         for (int ordinateIndex = 0; ordinateIndex < seq.Dimension; ordinateIndex++)
         {
             seq.SetOrdinate(index, ordinateIndex, index);
         }
     }
 }
コード例 #8
0
        private static CoordinateSequence FillNonPlanarDimensions(CoordinateSequence seq)
        {
            if (seq.Dimension < 3)
            {
                return(seq);
            }

            for (int i = 0; i < seq.Count; i++)
            {
                for (int j = 2; j < seq.Dimension; j++)
                {
                    seq.SetOrdinate(i, j, i * Math.Pow(10, j - 1));
                }
            }

            return(seq);
        }
コード例 #9
0
            public void Filter(CoordinateSequence seq)
            {
                if (!seq.HasZ)
                {
                    // if no Z then short-circuit evaluation
                    Done = true;
                    return;
                }

                for (int i = 0; i < seq.Count; i++)
                {
                    // if Z not populated then assign using model
                    if (double.IsNaN(seq.GetZ(i)))
                    {
                        double z = _em.GetZ(seq.GetOrdinate(i, Ordinate.X), seq.GetOrdinate(i, Ordinate.Y));
                        seq.SetOrdinate(i, Ordinate.Z, z);
                    }
                }
            }
コード例 #10
0
ファイル: MLineString.cs プロジェクト: nemesv/ASTRA.EMSG
 public void SetMeasureAtIndex(int index, double m)
 {
     CoordinateSequence.SetOrdinate(index, Ordinate.M, m);
     this.GeometryChanged();
 }
コード例 #11
0
 /// <summary>
 /// Rounds the Coordinates in the sequence to match the PrecisionModel
 /// </summary>
 public void Filter(CoordinateSequence seq, int i)
 {
     seq.SetOrdinate(i, 0, _precModel.MakePrecise(seq.GetOrdinate(i, 0)));
     seq.SetOrdinate(i, 1, _precModel.MakePrecise(seq.GetOrdinate(i, 1)));
 }