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); } }
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)); }
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; } } }