示例#1
0
        public void Generate(Qtree qtree)
        {
            //var mapa = new Mapa("d:\\Mapas\\amba\\bsas.map");

            //var mapa = new Mapa("d:\\Mapas\\Chubut\\cmdo.map");
            var cartografia = new Cartografia("d:\\Mapas\\amba");

            foreach (var mapa in cartografia.Mapas)
            {
                Generate(qtree, mapa);
            }
        }
示例#2
0
        private bool IsIncludedInQtree(Mapa mapa, Qtree qtree)
        {
            if (qtree.Format == QtreeFormat.Torino)
            {
                return(true);
            }
            var header = mapa.Header;
            var minlat = Util.LatitudFromWorldCoord(header.YMin);
            var maxlat = Util.LatitudFromWorldCoord(header.YMax);
            var minlon = Util.LongitudFromWorldCoord(header.XMin);
            var maxlon = Util.LongitudFromWorldCoord(header.XMax);
            var bottom = Math.Min(minlat, maxlat);
            var top    = Math.Max(minlat, maxlat);
            var left   = Math.Min(minlon, maxlon);
            var right  = Math.Max(minlon, maxlon);

            return(!(top < qtree.Bottom || bottom > qtree.Top || left > qtree.Right || right < qtree.Left));
        }
示例#3
0
        private void Generate(Qtree qtree, Mapa mapa)
        {
            if (!IsIncludedInQtree(mapa, qtree))
            {
                return;
            }

            for (int j = mapa.Poligonales.Count - 1; j >= 0; j--)
            {
                var poligonal = mapa.Poligonales[j];
                if (!Drawable(poligonal.Nivel))
                {
                    continue;
                }

                int[] vertices = mapa.Poligonales.GetVertices(j);

                LonLat last     = null;
                bool   drawNext = true;
                foreach (var vertice in vertices)
                {
                    var lonlat = new LonLat(mapa.Coords[Math.Abs(vertice)]);
                    if (last != null && drawNext)
                    {
                        var qs = qtree.MakeLeafLine(last.Longitud, last.Latitud, lonlat.Longitud, lonlat.Latitud, GetNivel(poligonal.Nivel).BrushSize);
                        foreach (var leaf in qs)
                        {
                            if (!leaf.Locked && CanOverwrite(poligonal.Nivel, leaf.Valor))
                            {
                                var latlon = qtree.GetCenterLatLon(leaf.Posicion);
                                qtree.SetValue(latlon.Latitud, latlon.Longitud, GetNivel(poligonal.Nivel).NivelQtree);
                            }
                        }
                    }
                    last     = lonlat;
                    drawNext = vertice > 0;
                }
            }
        }