MapSuite Team,
In V6 I had a concern about performance. However, V7 has greatly improved performance. I can actually notice that the order of drawing of the layers is different and much faster. My application has 25 shape file layers(within two Overlays) and 16 MrSid’s (within their own Overlay). The final configuration will have approximately 50+ shape file layers.
Other issues that I had also appear to have been resolved. For example, the real-time updating of an InMemoryFeatureLayer, used for AVL, had issues with committing updates, so far I do not see any of those issues.
Thanks for releasing V7.
Regards,
Dennis
Performance of V7
That’s great, Dennis. Thanks for your feedback which always makes our products better and better.
Johnny
Im glad you have a good performance. I have 6 shapefiles of all the country. The big one has 2,000,000 blocks. But is very very slow. I have an overlay for each file in order to show or hide the information.
Ive already done the grid separation recommended on the performance guide. But im writing to you in order to see if I can get an adviced or what do you consider in your experience would be the initial steps in order to have a good performance.
Thank you very much I really appreciate your help
Hi Rodrigo,
For get better performance, the common solution is build index file and choose multiply tile mode then open tile cache.
How you did grid separation, does that works for you?
Regards,
Don
Thank you very much, ive already make the grid, the index and the open cache. ive already have a better performance based on your suggestions. The thing here is that when user is drawing a line between different points the map refresh on every line and is imposible to work like this.
Please…
enter on this page and then “zoom in” until you see Green points, this points are stores. After you see them on the map, please clic on every store first one and 1 or 2 secs after the second one. The system will start drawing a line between the stores. And you will note that on every clic the map refresh making difficult to work.
What can i do?
54.201.164.148/IDM/
Hi Rodrigo,
I noticeted that, I have two questions about your app.
1. Are you using wpf edition or web edition?
2. How you implement your red line, and how you refresh your map after line added?
Regards,
Don
Im using web edition and this is the code.
protected
void
Map1_Click(
object
sender, MapClickedEventArgs e)
{
LayerOverlay Overlay = (LayerOverlay) Map1.CustomOverlays[
"Abarrotes"
];
MsSql2008FeatureLayer AbarrotesLayer = (MsSql2008FeatureLayer)(Overlay.Layers[
"Abarrotes"
]);
AbarrotesLayer.Open();
System.Collections.ObjectModel.Collection<Feature> selectedFeatures = AbarrotesLayer.QueryTools.GetFeaturesNearestTo(e.Position,GeographyUnit.Meter,1,
new
string
[] {
"nom_estab"
,
"direccion"
,
"colonia"
});
AbarrotesLayer.Close();
ruta(selectedFeatures[0].Id);
}
protected
void
ruta(
string
id)
{
corrida Ruta = (corrida)Session[
"Ruta"
];
Tienda tienda1;
LayerOverlay Overlay = (LayerOverlay)Map1.CustomOverlays[
"Abarrotes"
];
MsSql2008FeatureLayer abarrotes = (MsSql2008FeatureLayer)Overlay.Layers[
"Abarrotes"
];
tienda1 =
new
Tienda(abarrotes, id);
Ruta.agrega(tienda1, 1);
drawLine(Ruta);
}
protected
void
drawLine(corrida rutaADibujar)
{
Vertex vertice;
LineShape ruta =
new
LineShape();
foreach
(Parada parada
in
rutaADibujar.Paradas)
{
vertice =
new
Vertex(parada.tienda.posicionX, parada.tienda.posicionY);
ruta.Vertices.Add(vertice);
}
if
(rutaADibujar.Paradas.Count > 1)
{
Feature feature =
new
Feature(ruta);
LayerOverlay Rutas = (LayerOverlay)Map1.CustomOverlays[
"Rutas"
];
InMemoryFeatureLayer inMemoryLayer = (InMemoryFeatureLayer)Rutas.Layers[
"shapeLayer"
];
inMemoryLayer.InternalFeatures.Clear();
inMemoryLayer.InternalFeatures.Add(
"Ruta"
, feature);
}
}
DAO
public
class
Tienda
{
public
string
id;
public
string
d_llave;
public
string
nombre;
public
double
posicionX;
public
double
posicionY;
public
Tienda(Layer layer,
string
idtienda)
{
MsSql2008FeatureLayer abarrotes = (MsSql2008FeatureLayer) layer;
abarrotes.Open();
Feature tienda = abarrotes.QueryTools.GetFeatureById(idtienda, ReturningColumnsType.AllColumns);
id = tienda.ColumnValues[
"MI_PRINX"
];
d_llave = tienda.ColumnValues[
"d_llave"
];
nombre = tienda.ColumnValues[
"nom_estab"
];
posicionX = tienda.GetBoundingBox().GetCenterPoint().X;
posicionY = tienda.GetBoundingBox().GetCenterPoint().Y;
}
}
public
class
Parada
{
public
Tienda tienda;
public
int
orden;
}
public
class
corrida
{
public
List<Parada> Paradas;
public
corrida()
{
Paradas =
new
List<Parada>();
}
public
void
agrega(Tienda tienda,
int
orden)
{
int
lugar = 0;
int
i = 0;
Parada Nueva =
new
Parada();
Nueva.orden = 0;
Nueva.tienda = tienda;
foreach
(Parada parada
in
Paradas)
{
if
(parada.orden == orden)
{
lugar = Paradas.IndexOf(parada);
}
}
Paradas.Insert(lugar, Nueva);
foreach
(Parada parada
in
Paradas)
{
parada.orden = i;
i++;
}
}
}
Hi Rodrigo,
You don’t want to refresh all overlays after feature added.
I think this topic is helpful for your situation.
thinkgeo.com/forums/MapSuite/tabid/143/aft/9676/Default.aspx
Regards,
Don