コード例 #1
0
ファイル: BasicClasses.cs プロジェクト: JokerDLord/assignment
        public XLayer ReadFile(string filename)
        {
            FileStream   fsr = new FileStream(filename, FileMode.Open);
            BinaryReader br  = new BinaryReader(fsr);
            //读文件头
            MyFileHeader mfh = (MyFileHeader)XTools.FromBytes(br, typeof(MyFileHeader));
            //读图层名称
            string name = XTools.ReadString(br);
            //读属性字段结构
            List <XField> fields = ReadFields(mfh.FieldCount, br);
            //定义图层
            SHAPETYPE ShapeType =
                (SHAPETYPE)Enum.Parse(typeof(SHAPETYPE),
                                      mfh.ShapeType.ToString());
            XExtent extent = new XExtent(
                new XVertex(mfh.MinX, mfh.MinY),
                new XVertex(mfh.MaxX, mfh.MaxY));
            XLayer layer = new XLayer(name, ShapeType, extent, fields);

            //读空间对象类型
            for (int i = 0; i < mfh.FeatureCount; i++)
            {
                XSpatial   spatial   = ReadSpatial(ShapeType, br);
                XAttribute attribute = ReadAttribute(br, fields);
                layer.AddFeature(new XFeature(spatial, attribute));
            }
            //关闭文件并返回结果
            br.Close();
            fsr.Close();
            return(layer);
        }
コード例 #2
0
ファイル: BasicClasses.cs プロジェクト: JokerDLord/GISbook
 public GISLayer(string _name, SHAPETYPE _shapetype, GISExtent _extent, List <GISField> _fields)
 {
     Name      = _name;
     ShapeType = _shapetype;
     Extent    = _extent;
     Fields    = _fields;
 }
コード例 #3
0
        public GISLayer ReadShapefile(string shpfilename)
        {
            FileStream      fsr       = new FileStream(shpfilename, FileMode.Open); //打开shp文件
            BinaryReader    br        = new BinaryReader(fsr);                      //获取文件流后用二进制读取工具
            ShapefileHeader sfh       = ReadFileHeader(br);                         //调用之前的函数 获取头文件
            SHAPETYPE       ShapeType = (SHAPETYPE)Enum.Parse(                      //类型整数变对应的枚举值
                typeof(SHAPETYPE), sfh.ShapeType.ToString());
            GISExtent extent = new GISExtent(sfh.Xmax, sfh.Xmin, sfh.Ymax, sfh.Ymin);
            GISLayer  layer  = new GISLayer(shpfilename, ShapeType, extent); //gislayer的构造参数分别是名字 图层类型 范围

            while (br.PeekChar() != -1)
            {
                RecordHeader rh            = ReadRecordHeader(br);
                int          RecordLength  = FromBigToLittle(rh.RecordLength) * 2 - 4;
                byte[]       RecordContent = br.ReadBytes(RecordLength);//将记录内容读入字节数组
                if (ShapeType == SHAPETYPE.point)
                {
                    GISPoint   onepoint   = ReadPoint(RecordContent);
                    GISFeature onefeature = new GISFeature(onepoint, new GISAttribute());
                    layer.AddFeature(onefeature);
                }
            }

            br.Close();
            fsr.Close();   //归还文件权限于操作系统
            return(layer); //最后返回一个图层文件
        }
コード例 #4
0
ファイル: BasicClasses.cs プロジェクト: JokerDLord/GISbook
 public GISLayer(string _name, SHAPETYPE _shapetype, GISExtent _extent)
 {
     Name      = _name;
     ShapeType = _shapetype;
     Extent    = _extent;
     Fields    = new List <GISField>();
 }
コード例 #5
0
ファイル: BasicClasses.cs プロジェクト: JokerDLord/assignment
        public XLayer ReadShapefile(string shpfilename)
        {
            //打开文件和读取工具
            FileStream   fsr = new FileStream(shpfilename, FileMode.Open);
            BinaryReader br  = new BinaryReader(fsr);
            //读取文件头
            ShapefileHeader sfh = (ShapefileHeader)
                                  XTools.FromBytes(br, typeof(ShapefileHeader));
            //获得空间对象类型
            SHAPETYPE ShapeType = (SHAPETYPE)Enum.Parse(typeof(SHAPETYPE), sfh.ShapeType.ToString());
            //获得空间范围
            XExtent extent = new XExtent(new XVertex(sfh.Xmin, sfh.Ymin),
                                         new XVertex(sfh.Xmax, sfh.Ymax));
            //读dbf
            string            dbfFileName = shpfilename.Replace(".shp", ".dbf");
            List <XField>     fields      = new List <XField>();
            List <XAttribute> attributes  = new List <XAttribute>();

            ReadDBFFile(dbfFileName, fields, attributes);
            //构建图层
            XLayer layer = new XLayer(shpfilename, ShapeType, extent, fields);
            int    index = 0;

            while (br.PeekChar() != -1)
            {
                //读记录头
                RecordHeader rh = (RecordHeader)
                                  XTools.FromBytes(br, typeof(RecordHeader));
                int    RecordLength  = FromBigToLittle(rh.RecordLength) * 2 - 4;
                byte[] RecordContent = br.ReadBytes(RecordLength);
                //开始读实际的空间数据
                if (ShapeType == SHAPETYPE.point)
                {
                    XPointSpatial point = ReadPoint(RecordContent);
                    layer.AddFeature(new XFeature(point, attributes[index]));
                }
                else if (ShapeType == SHAPETYPE.line)
                {
                    List <XLineSpatial> lines = ReadLines(RecordContent);
                    foreach (XLineSpatial line in lines)
                    {
                        layer.AddFeature(new XFeature(line, new XAttribute(attributes[index])));
                    }
                }
                else if (ShapeType == SHAPETYPE.polygon)
                {
                    List <XPolygonSpatial> polygons = ReadPolygons(RecordContent);
                    foreach (XPolygonSpatial polygon in polygons)
                    {
                        layer.AddFeature(new XFeature(polygon, new XAttribute(attributes[index])));
                    }
                }
                index++;
            }
            //关闭读取工具和文件
            br.Close();
            fsr.Close();
            return(layer);
        }
コード例 #6
0
ファイル: BasicClasses.cs プロジェクト: JokerDLord/assignment
 public XLayer(string _Name, SHAPETYPE _ShapeType,
               XExtent _Extent, List <XField> _Fields)
 {
     Name      = _Name;
     ShapeType = _ShapeType;
     Extent    = _Extent;
     Fields    = _Fields;
 }
コード例 #7
0
        static List <GISFeature> ReadFeatures(BinaryReader br, SHAPETYPE ShapeType, List <GISField> Fields, int FeatureCount)
        {
            List <GISFeature> Features = new List <GISFeature>();

            for (int featureindex = 0; featureindex < FeatureCount; featureindex++)
            {
                GISFeature feature = new GISFeature(null, null);
                if (ShapeType == SHAPETYPE.POINT)
                {
                    GISVertex _location = ReadVertex(br);
                    feature.spatialpart = new GISPoint(_location);
                }
                else if (ShapeType == SHAPETYPE.LINE)
                {
                    List <GISVertex> vs = new List <GISVertex>();
                    int vcount          = br.ReadInt32();
                    for (int vc = 0; vc < vcount; vc++)
                    {
                        vs.Add(ReadVertex(br));
                    }
                    feature.spatialpart = new GISLine(vs);
                }
                else if (ShapeType == SHAPETYPE.POLYGON)
                {
                    List <GISVertex> vs = new List <GISVertex>();
                    int vcount          = br.ReadInt32();
                    for (int vc = 0; vc < vcount; vc++)
                    {
                        vs.Add(ReadVertex(br));
                    }
                    feature.spatialpart = new GISPolygon(vs);
                }
                GISAttribute ga = new GISAttribute();
                for (int fieldindex = 0; fieldindex < Fields.Count; fieldindex++)
                {
                    GISField field = Fields[fieldindex];
                    if (field.datatype == typeof(int))
                    {
                        ga.AddValue(br.ReadInt32());
                    }
                    else if (field.datatype == typeof(double))
                    {
                        ga.AddValue(br.ReadDouble());
                    }
                    else if (field.datatype == typeof(string))
                    {
                        ga.AddValue(ReadString(br));
                    }
                }
                feature.attributepart = ga;
                Features.Add(feature);
            }
            return(Features);
        }
コード例 #8
0
ファイル: BasicClasses.cs プロジェクト: JokerDLord/GISbook
        public static GISLayer ReadShapefile(string shpfilename)
        {
            FileStream      fsr       = new FileStream(shpfilename, FileMode.Open); //打开shp文件
            BinaryReader    br        = new BinaryReader(fsr);                      //获取文件流后用二进制读取工具
            ShapefileHeader sfh       = ReadFileHeader(br);                         //调用之前的函数 获取头文件
            SHAPETYPE       ShapeType = (SHAPETYPE)Enum.Parse(                      //类型整数变对应的枚举值
                typeof(SHAPETYPE), sfh.ShapeType.ToString());
            GISExtent extent      = new GISExtent(sfh.Xmax, sfh.Xmin, sfh.Ymax, sfh.Ymin);
            string    dbffilename = shpfilename.Replace(".shp", ".dbf");                             //更改后缀
            DataTable table       = ReadDBF(dbffilename);
            GISLayer  layer       = new GISLayer(shpfilename, ShapeType, extent, ReadFields(table)); //gislayer的构造参数分别是名字 图层类型 范围 *GISField的泛型
            int       rowindex    = 0;                                                               //当前读取的记录位置

            while (br.PeekChar() != -1)
            {
                RecordHeader rh            = ReadRecordHeader(br);
                int          RecordLength  = FromBigToLittle(rh.RecordLength) * 2 - 4;
                byte[]       RecordContent = br.ReadBytes(RecordLength);//将记录内容读入字节数组

                if (ShapeType == SHAPETYPE.point)
                {
                    GISPoint   onepoint   = ReadPoint(RecordContent);
                    GISFeature onefeature = new GISFeature(onepoint, ReadAttribute(table, rowindex));
                    layer.AddFeature(onefeature);
                }
                if (ShapeType == SHAPETYPE.line)
                {
                    List <GISLine> lines = ReadLines(RecordContent);
                    for (int i = 0; i < lines.Count; i++)
                    {
                        GISFeature onefeature = new GISFeature(lines[i], ReadAttribute(table, rowindex));
                        layer.AddFeature(onefeature);
                    }
                }
                if (ShapeType == SHAPETYPE.polygon)
                {
                    List <GISPolygon> polygons = ReadPolygons(RecordContent);
                    for (int i = 0; i < polygons.Count; i++)
                    {
                        GISFeature onefeature = new GISFeature(polygons[i], ReadAttribute(table, rowindex));
                        layer.AddFeature(onefeature);
                    }
                }
                rowindex++;
            }

            br.Close();
            fsr.Close();   //归还文件权限于操作系统
            return(layer); //最后返回一个图层文件
        }
コード例 #9
0
ファイル: BasicClasses.cs プロジェクト: JokerDLord/GISbook
        public static GISLayer ReadFile(string filename)
        {
            FileStream      fsr       = new FileStream(filename, FileMode.Open);
            BinaryReader    br        = new BinaryReader(fsr);
            MyFileHeader    mfh       = (MyFileHeader)(GISTools.FromBytes(br, typeof(MyFileHeader)));       //读取文件头
            SHAPETYPE       ShapeType = (SHAPETYPE)Enum.Parse(typeof(SHAPETYPE), mfh.Shapetype.ToString()); //获取空间实体类型shapetype和
            GISExtent       Extent    = new GISExtent(mfh.MinX, mfh.MaxX, mfh.MinY, mfh.MaxY);              //地图范围extent
            string          layername = GISTools.ReadString(br);                                            //读取图层名
            List <GISField> Fields    = ReadFields(br, mfh.FieldCount);                                     //读取字段信息
            GISLayer        layer     = new GISLayer(layername, ShapeType, Extent, Fields);

            ReadFeatures(layer, br, mfh.FeatureCount);
            br.Close();
            fsr.Close();
            return(layer);
        }
コード例 #10
0
ファイル: BasicClasses.cs プロジェクト: JokerDLord/assignment
 private XSpatial ReadSpatial(SHAPETYPE shapeType, BinaryReader br)
 {
     if (shapeType == SHAPETYPE.point)
     {
         return(new XPointSpatial(new XVertex(br)));
     }
     if (shapeType == SHAPETYPE.line)
     {
         return(new XLineSpatial(ReadMultipleVertexes(br)));
     }
     if (shapeType == SHAPETYPE.polygon)
     {
         return(new XPolygonSpatial(ReadMultipleVertexes(br)));
     }
     return(null);
 }
コード例 #11
0
        public static GISLayer ReadFile(string filename)
        {
            FileStream      fsr       = new FileStream(filename, FileMode.Open);
            BinaryReader    br        = new BinaryReader(fsr);
            MyFileHeader    mfh       = (MyFileHeader)(FromBytes(br, typeof(MyFileHeader)));
            SHAPETYPE       ShapeType = IntToShapeType(mfh.ShapeType);
            GISExtent       Extent    = new GISExtent(new GISVertex(mfh.MinX, mfh.MinY), new GISVertex(mfh.MaxX, mfh.MaxY));
            string          layername = ReadString(br);
            List <GISField> Fields    = ReadFields(br, mfh.FieldCount);
            GISLayer        layer     = new GISLayer(layername, ShapeType, Extent, Fields);

            layer.DrawAttributeOrNot = (mfh.DrawAttributeOrNot == 1);
            layer.Features           = ReadFeatures(br, ShapeType, Fields, mfh.FeatureCount);
            br.Close();
            fsr.Close();
            return(layer);
        }
コード例 #12
0
 static int ShapeTypeToInt(SHAPETYPE st)
 {
     if (st == SHAPETYPE.POINT)
     {
         return(1);
     }
     else if (st == SHAPETYPE.LINE)
     {
         return(2);
     }
     else if (st == SHAPETYPE.POLYGON)
     {
         return(3);
     }
     else
     {
         return(0);
     }
 }
コード例 #13
0
ファイル: BasicClasses.cs プロジェクト: JokerDLord/GISbook
        public SelectResult Select(GISVertex vertex, List <GISFeature> features, SHAPETYPE shapetype, GISView view)
        {
            if (features.Count == 0)
            {
                return(SelectResult.EmptySet);
            }
            GISExtent MinSelectExtent = BuildExtent(vertex, view);//建立最小选择范围

            switch (shapetype)
            {
            case SHAPETYPE.point:
                Console.WriteLine("point");
                return(SelectPoint(vertex, features, view, MinSelectExtent));

            case SHAPETYPE.line:
                Console.WriteLine("line");
                return(SelectLine(vertex, features, view, MinSelectExtent));

            case SHAPETYPE.polygon:
                Console.WriteLine("polygon");
                return(SelectPolygon(vertex, features, view, MinSelectExtent));
            }
            return(SelectResult.UnknownType);
        }
コード例 #14
0
    public static void ShapeDetected(string shape)
    {
        if (PausedOCV) return;

        LastShape = (SHAPETYPE)int.Parse(shape);

        if (OpenCVPlugin != null)
        {
            var shapePos = OpenCVPlugin.Call<double[]>("GetShapePosition");
            LastShapePos = new Vector2((float)shapePos[0], (float)shapePos[1]);
        }
    }
コード例 #15
0
 public static extern SHAPETYPE INK_RecognizeShape(CGStroke pStroke, int nStrokeCnt, SHAPETYPE inType);
コード例 #16
0
 private static extern SHAPETYPE INK_RecognizeShape(CGStroke[] pStroke, int nStrokeCnt, SHAPETYPE inType);
コード例 #17
0
ファイル: WritePadAPI.cs プロジェクト: phatware/WritePadSDK
 private static extern SHAPETYPE INK_RecognizeShape(CGStroke[] pStroke, int nStrokeCnt, SHAPETYPE inType);
コード例 #18
0
ファイル: WritePadAPI.cs プロジェクト: phatware/WritePadSDK
 public static extern SHAPETYPE INK_RecognizeShape(CGStroke pStroke, int nStrokeCnt, SHAPETYPE inType);
コード例 #19
0
        public static GISLayer ReadShapeFile(string shpfilename)
        {
            FileStream      fsr       = new FileStream(shpfilename, FileMode.Open);
            BinaryReader    br        = new BinaryReader(fsr);
            ShapeFileHeader sfh       = ReadFileHeader(br);
            SHAPETYPE       ShapeType = SHAPETYPE.POINT;

            if (sfh.ShapeType == 1)
            {
                ShapeType = SHAPETYPE.POINT;
            }
            else if (sfh.ShapeType == 3)
            {
                ShapeType = SHAPETYPE.LINE;
            }
            else if (sfh.ShapeType == 5)
            {
                ShapeType = SHAPETYPE.POLYGON;
            }
            else
            {
                return(null);
            }
            GISExtent extent = new GISExtent(new GISVertex(sfh.Xmin, sfh.Ymin), new GISVertex(sfh.Xmax, sfh.Ymax));

            string    dbffilename = shpfilename.Replace(".shp", ".dbf");
            DataTable table       = ReadDBF(dbffilename);
            GISLayer  layer       = new GISLayer(shpfilename, ShapeType, extent, ReadFields(table));
            int       rowindex    = 0;

            while (br.PeekChar() != -1)
            {
                RecordHeader rh            = ReadRecordHeader(br);
                int          RecordLength  = FromBigToLittle(rh.RecordLength);
                byte[]       RecordContent = br.ReadBytes(RecordLength * 2 - 4);
                if (ShapeType == SHAPETYPE.POINT)
                {
                    GISPoint   onepoint   = ReadPoint(RecordContent);
                    GISFeature onefeature = new GISFeature(onepoint, ReadAttribute(table, rowindex));
                    layer.Features.Add(onefeature);
                }
                if (ShapeType == SHAPETYPE.LINE)
                {
                    List <GISLine> lines = ReadLines(RecordContent);
                    for (int i = 0; i < lines.Count; i++)
                    {
                        GISFeature onefeature = new GISFeature(lines[i], ReadAttribute(table, rowindex));
                        layer.Features.Add(onefeature);
                    }
                }
                if (ShapeType == SHAPETYPE.POLYGON)
                {
                    List <GISPolygon> polygons = ReadPolygons(RecordContent);
                    for (int i = 0; i < polygons.Count; i++)
                    {
                        GISFeature onefeature = new GISFeature(polygons[i], ReadAttribute(table, rowindex));
                        layer.Features.Add(onefeature);
                    }
                }
                rowindex++;

                //其它代码,用于处理RecordContent
            }
            br.Close();
            fsr.Close();
            return(layer);
        }
コード例 #20
0
 List <GISFeature> Features = new List <GISFeature>(); //私有的 不宜改动
 public GISLayer(string _name, SHAPETYPE _shapetype, GISExtent _extent)
 {
     Name      = _name;
     ShapeType = _shapetype;
     Extent    = _extent;
 }
コード例 #21
0
    // Use this for initialization
    private void Start()
    {
        Config.World = this.gameObject;

        var cardMain = GameObject.Find("CardboardMain");
        if (cardMain != null)
            inputGamepad = cardMain.GetComponent<InputGamepad>();

        _sides[0] = Instantiate(Resources.Load("Prefabs/Gebirge") as GameObject);
        _sides[0].transform.parent = this.transform;
        _sides[0].name = "Gebirge";

        _sides[1] = Instantiate(Resources.Load("Prefabs/Dorf") as GameObject);
        _sides[1].transform.parent = this.transform;
        _sides[1].name = "Dorf";

        _sides[2] = Instantiate(Resources.Load("Prefabs/Eis") as GameObject);
        _sides[2].transform.parent = this.transform;
        _sides[2].name = "Eis";

        _sides[3] = Instantiate(Resources.Load("Prefabs/Feuer") as GameObject);
        _sides[3].transform.parent = this.transform;
        _sides[3].name = "Feuer";

        _sides[4] = Instantiate(Resources.Load("Prefabs/Wueste") as GameObject);
        _sides[4].transform.parent = this.transform;
        _sides[4].name = "Wueste";

        _sides[5] = Instantiate(Resources.Load("Prefabs/Wald") as GameObject);
        _sides[5].transform.parent = this.transform;
        _sides[5].name = "Wald";

        for (int i = 0; i < _sides.Length; i++)
        {
            if (_sides[i] == null)
            {
                _sides[i] = Instantiate(Resources.Load("Prefabs/DummySide" + (i)) as GameObject);
                _sides[i].transform.parent = this.transform;
                _sides[i].name = "Side" + i;
            }
        }

        //Front Side
        _sides[0].transform.position = new Vector3(-9.8f, -27, 67.7f);
        _sides[0].transform.Rotate(new Vector3(-90, 0, 0));

        //Back Side
        _sides[1].transform.position = new Vector3(0, 0, -100);
        _sides[1].transform.Rotate(new Vector3(90, 0, 0));

        //Right
        _sides[2].transform.position = new Vector3(100, 0, 0);
        _sides[2].transform.Rotate(new Vector3(0, 0, 90));

        //Left
        _sides[3].transform.position = new Vector3(-150, -6, 176);
        _sides[3].transform.Rotate(new Vector3(0, 0, -90));

        //Top
        _sides[4].transform.position = new Vector3(0, 100, 0);
        _sides[4].transform.Rotate(180, 0, 0);

        //Bottom
        _sides[5].transform.position = new Vector3(0, -100, 0);

        // Aufklappen
        _rotatePoint = _sides[4].transform.position + 100*Vector3.forward;
        _rotationStep = 0;

        IsWorldOpen = false;
        IsWorldOpening = false;

        _lastShape = SHAPETYPE.Star;
    }