コード例 #1
0
        /// <summary>
        /// Initializes a new instance of the WktReader class that reads data from specific stream.
        /// </summary>
        /// <param name="input">The stream to read data from.</param>
        public WktReader(Stream input)
        {
            if (input == null)
            {
                throw new ArgumentNullException("input", "Input stream cannot be null");
            }

            _inputReader = new StreamReader(input);
            _tokens      = new WktTokensBuffer(WktTokenizer.Tokenize(_inputReader));
        }
コード例 #2
0
        /// <summary>
        /// Processes text from TextReader and splits it into tokens.
        /// </summary>
        /// <param name="reader">The TextReader to read string from</param>
        /// <returns>The collection parsed tokens of the input string</returns>
        public static IEnumerable <WktToken> Tokenize(TextReader reader)
        {
            StringBuilder stringBuffer = new StringBuilder();

            if (reader.Peek() == -1)
            {
                yield break;
            }

            char ch = (char)reader.Read();

            stringBuffer.Append(ch);
            TokenType lastToken = WktTokenizer.GetTokenType(ch);

            while (reader.Peek() != -1)
            {
                ch = (char)reader.Read();
                TokenType token = WktTokenizer.GetTokenType(ch);

                // tokens COMMA, LEFT_PARENTHESIS and RIGHT_PARENTHESIS can not be grupped together
                if ((token != lastToken) || token == TokenType.COMMA || token == TokenType.LEFT_PARENTHESIS || token == TokenType.RIGHT_PARENTHESIS)
                {
                    yield return(new WktToken()
                    {
                        Type = lastToken, Value = stringBuffer.ToString()
                    });

                    stringBuffer.Clear();
                    lastToken = token;
                }

                stringBuffer.Append(ch);
            }

            yield return(new WktToken()
            {
                Type = lastToken, Value = stringBuffer.ToString()
            });
        }
コード例 #3
0
        /// <summary>
        /// Parses a Geometry from WKT string.
        /// </summary>
        /// <param name="wkt">The string with WKT representation of a Geometry.</param>
        /// <returns>The parsed Geometry.</returns>
        public static Geometry Parse(string wkt)
        {
            WktTokensBuffer tokens = new WktTokensBuffer(WktTokenizer.Tokenize(wkt));

            return(WktReader.ParseGeometryTaggedText(tokens));
        }
コード例 #4
0
 /// <summary>
 /// Initializes a new instance of the WktReader class that reads data from specific file.
 /// </summary>
 /// <param name="path">Path to the file to read data from.</param>
 public WktReader(string path)
 {
     _inputFileStream = new FileStream(path, FileMode.Open, FileAccess.Read);
     _inputReader     = new StreamReader(_inputFileStream);
     _tokens          = new WktTokensBuffer(WktTokenizer.Tokenize(_inputReader));
 }
コード例 #5
0
        /// <summary>
        /// Splits text to tokens.
        /// </summary>
        /// <param name="text">The text to be splitted.</param>
        /// <returns>The list of parsed tokens of the input string.</returns>
        public static IEnumerable <WktToken> Tokenize(string text)
        {
            StringReader reader = new StringReader(text);

            return(WktTokenizer.Tokenize(reader));
        }