示例#1
0
        /// <summary>
        /// Читает запись представляющую полигон.
        /// </summary>
        /// <param name="file">Входной поток</param>
        /// <param name="record">Запись Shape-файла в которую будет помещена прочитанная информация</param>
        /// <param name="bounds">Ограничивающий прямоугольник, с которым должен пересекаться ограничивающий прямоугольник записи</param>
        public override bool Read(/*BigEndianBinaryReader*/ Stream file, BoundingRectangle bounds, ShapeFileRecord record)
        {
            record.MinX = file.ReadDouble();// ShapeFile.ReadDouble64_LE(stream);
            record.MinY = file.ReadDouble(); //ShapeFile.ReadDouble64_LE(stream);
            record.MaxX = file.ReadDouble(); ;// ShapeFile.ReadDouble64_LE(stream);
            record.MaxY = file.ReadDouble(); ;// ShapeFile.ReadDouble64_LE(stream);

            int numParts = file.ReadInt32();// ShapeFile.ReadInt32_LE(stream);
            int numPoints = file.ReadInt32(); //ShapeFile.ReadInt32_LE(stream);

            if (!ShapeHandler.IsRecordInView(bounds, record))
            {
                file.Seek((long)numPoints * 16 + numParts * 4, SeekOrigin.Current);
                return false;
            }

            for (int i = 0; i < numParts; i++)
                record.Parts.Add(file.ReadInt32());//ShapeFile.ReadInt32_LE(stream));

            for (int i = 0; i < numPoints; i++)
            {
                ICoordinate p =
                    PlanimetryEnvironment.NewCoordinate(
                        file.ReadDouble(),//ShapeFile.ReadDouble64_LE(stream),
                        file.ReadDouble());//ShapeFile.ReadDouble64_LE(stream));

                record.Points.Add(p);
            }

            return true;
        }
示例#2
0
        /// <summary>
        /// Читает запись представляющую полигон.
        /// </summary>
        /// <param name="file">Входной поток</param>
        /// <param name="record">Запись Shape-файла в которую будет помещена прочитанная информация</param>
        /// <param name="bounds">Ограничивающий прямоугольник, с которым должен пересекаться ограничивающий прямоугольник записи</param>
        public override bool Read(/*BigEndianBinaryReader*/ Stream file, BoundingRectangle bounds, ShapeFileRecord record)
        {
            record.MinX = file.ReadDouble();  // ShapeFile.ReadDouble64_LE(stream);
            record.MinY = file.ReadDouble();  //ShapeFile.ReadDouble64_LE(stream);
            record.MaxX = file.ReadDouble();; // ShapeFile.ReadDouble64_LE(stream);
            record.MaxY = file.ReadDouble();; // ShapeFile.ReadDouble64_LE(stream);

            int numParts  = file.ReadInt32(); // ShapeFile.ReadInt32_LE(stream);
            int numPoints = file.ReadInt32(); //ShapeFile.ReadInt32_LE(stream);

            if (!ShapeHandler.IsRecordInView(bounds, record))
            {
                file.Seek((long)numPoints * 16 + numParts * 4, SeekOrigin.Current);
                return(false);
            }

            for (int i = 0; i < numParts; i++)
            {
                record.Parts.Add(file.ReadInt32());//ShapeFile.ReadInt32_LE(stream));
            }
            for (int i = 0; i < numPoints; i++)
            {
                ICoordinate p =
                    PlanimetryEnvironment.NewCoordinate(
                        file.ReadDouble(),  //ShapeFile.ReadDouble64_LE(stream),
                        file.ReadDouble()); //ShapeFile.ReadDouble64_LE(stream));

                record.Points.Add(p);
            }

            return(true);
        }
        /// <summary>
        /// Читает запись представляющую точку.
        /// </summary>
        /// <param name="file">Входной поток</param>
        /// <param name="record">Запись Shape-файла в которую будет помещена прочитанная информация</param>
        /// <param name="bounds">Ограничивающий прямоугольник, с которым должен пересекаться ограничивающий прямоугольник записи</param>
        public override bool Read(/*BigEndianBinaryReader*/ Stream file, BoundingRectangle bounds, ShapeFileRecord record)
        {
            ICoordinate p = PlanimetryEnvironment.NewCoordinate(0, 0);

            p.X = file.ReadDouble(); // ShapeFile.ReadDouble64_LE(stream);
            p.Y = file.ReadDouble(); // ShapeFile.ReadDouble64_LE(stream);

            if (bounds != null && !bounds.IsEmpty() && !bounds.ContainsPoint(p))
            {
                return(false);
            }

            record.Points.Add(p);

            record.MinX = p.X;
            record.MinY = p.Y;
            record.MaxX = record.MinX;
            record.MaxY = record.MinY;

            return(true);
        }
 /// <summary>
 /// Читать потока данные по геометрическому объекту и заполнять запись shape-файла
 /// </summary>
 /// <param name="file">Входной поток для чтения</param>
 /// <param name="bounds">Ограничивающий прямоугольник, с которым должен пересекаться ограничивающий прямоугольник записи</param>
 /// <param name="Record">Запись Shape-файла в которую будет помещена прочитанная информация</param>
 /// <returns>Успешность операции</returns>
 public abstract bool Read(Stream file, BoundingRectangle bounds, ShapeFileRecord Record);
示例#5
0
        //建立表
        private void button2_Click(object sender, RoutedEventArgs e)
        {
            ShapeFileRecord record1 = shapeFileReader.Records[0];
            Graphic         g1      = record1.ToGraphic();

            if (g1 != null)
            {
                FeatureSet fs1 = new FeatureSet();
                fs1.Features.Add(g1);
                string     json1    = fs1.ToJson();
                JsonObject jsonObj1 = JsonObject.Parse(json1) as JsonObject;
                if (jsonObj1.ContainsKey("features"))
                {
                    JsonValue jsonFea1 = jsonObj1["features"];
                    if (jsonFea1 is JsonArray)
                    {
                        if (jsonFea1[0].ContainsKey("attributes"))
                        {
                            JsonValue     jsonAtt1 = jsonFea1[0]["attributes"];
                            JsonObject    jsonAO1  = jsonAtt1 as JsonObject;
                            ArrayOfString Names    = new ArrayOfString();
                            ArrayOfString Types    = new ArrayOfString();
                            //获取名
                            foreach (string name in jsonAO1.Keys)
                            {
                                Names.Add(name);
                                names += "," + name;
                            }
                            Names.Add("Json");
                            names += ",Json";
                            //获取属性类型
                            foreach (JsonValue item in jsonAO1.Values)
                            {
                                switch (item.JsonType)
                                {
                                case JsonType.String:
                                    Types.Add((typeof(String)).ToString());
                                    break;

                                case JsonType.Number:
                                    Types.Add((typeof(Double)).ToString());
                                    break;

                                case JsonType.Boolean:
                                    Types.Add((typeof(Boolean)).ToString());
                                    break;

                                case JsonType.Array:
                                    Types.Add((typeof(Array)).ToString());
                                    break;

                                case JsonType.Object:
                                    Types.Add((typeof(Object)).ToString());
                                    break;

                                default: MessageBox.Show("未识别类型");
                                    break;
                                }
                            }
                            Types.Add("Json");
                            MyWebService1SoapClient MyClient1 = new MyWebService1SoapClient();
                            MyClient1.DynamicAccessCompleted += new EventHandler <System.ComponentModel.AsyncCompletedEventArgs>(MyClient1_DynamicAccessCompleted);
                            MyClient1.DynamicAccessAsync(textBox1.Text + ".mdb", textBox2.Text, Names, Types);
                        }
                    }
                }
            }
        }