Web GIS with Dotspatial

Jan 7, 2013 at 7:44 AM
Edited Jan 7, 2013 at 7:57 AM

Hi everyone!


I have developed webgis with Dotspatial.
Here is the link of the website
http://cticdss.gencomnet.org/default.aspx (please type more full default.aspx in address bar of browse). This server is slowly, please watting for web generate in some minute!
The interest you can send mail to tittit60@yahoo.com

Thank you everyone!

My english is not very good

Developer
Jan 7, 2013 at 3:14 PM

Intersting the "meter", can you share the code ?

Jan 8, 2013 at 3:14 AM
Edited Jan 8, 2013 at 3:36 AM

Hi tranghv !

I also came from Vietnam. I'm a GIS developer.

Hope i and you can help each other more.

My yahoo: ngtrungdung_se49@yahoo.com

Jan 8, 2013 at 1:46 PM
Edited Jan 8, 2013 at 1:50 PM

Hi tranghv

Interesting the webgis developed with Dotspatial , can you share the code?

 

Check this out....

http://dotspatial.codeplex.com/discussions/403644

Jan 9, 2013 at 12:59 AM
Edited Jan 9, 2013 at 4:42 AM

Hi Everyone!

I can share my code! 

This is code for scale bar. This code add to function Draw() of GDImap Control!

#region Draw Scale bar

            //Sets up the pens and brushes
            Brush scaleBrush = new SolidBrush(Color.OrangeRed);
            Pen scalePen = new Pen(Color.OrangeRed, 2);
            Font font = new Font("Aril", 10, FontStyle.Bold);

            //Calculates the width of one break in greographic units
            float unitLegnth = g.MeasureString("km", font).Width * 2;
            float widthNoUnit = (150 - unitLegnth);
            Int64 geoBreakWidth = Convert.ToInt64((widthNoUnit / 100 * Scale(Size.Width)) / GetConversionFactor("meters") / (1));

            //If the geobreakWidth is less than 1 we return and don't draw anything
            //if (geoBreakWidth < 1)
                //return;

            //Save the old transform
            Matrix oldTransform = g.Transform;
            g.TranslateTransform(Size.Width / 40, (Size.Height / 20)*18);
            TextRenderingHint oldHint = g.TextRenderingHint;
            g.TextRenderingHint = TextRenderingHint.AntiAliasGridFit;

            double n = Math.Pow(10, geoBreakWidth.ToString(CultureInfo.InvariantCulture).Length - 1);
            geoBreakWidth = Convert.ToInt64(Math.Floor(geoBreakWidth / n) * n);
            Int64 breakWidth = Convert.ToInt64((1D * geoBreakWidth / Scale(Size.Width)) * GetConversionFactor("meters") * 100D);
            float fontHeight = g.MeasureString(geoBreakWidth.ToString(CultureInfo.InvariantCulture), font).Height;
            float leftStart = g.MeasureString(Math.Abs(geoBreakWidth).ToString(CultureInfo.InvariantCulture), font).Width / 2F;

            //Decides if a break should be drawn before the zero
            int startBreak = 0;


            g.DrawLine(scalePen, leftStart, fontHeight * 1.6f, leftStart + (breakWidth * 1), fontHeight * 1.6f);

            g.DrawString("T&#7881; l&#7879; 1 : " + Scale(Size.Width).ToString(), font, scaleBrush, leftStart - (g.MeasureString(Math.Abs(geoBreakWidth * startBreak).ToString(), font).Width / 2), fontHeight * 2.5F);

            for (int i = startBreak; i <= 1 + startBreak; i++)
            {
                g.DrawLine(scalePen, leftStart, fontHeight * 1.1f, leftStart, fontHeight + (fontHeight * 1.1f));
                if (geoBreakWidth > 1000)
                    g.DrawString(Math.Abs(geoBreakWidth / 1000 * i).ToString(CultureInfo.InvariantCulture), font, scaleBrush, leftStart - (g.MeasureString(Math.Abs(geoBreakWidth * i).ToString(), font).Width / 2), 0);
                else
                    g.DrawString(Math.Abs(geoBreakWidth * i).ToString(CultureInfo.InvariantCulture), font, scaleBrush, leftStart - (g.MeasureString(Math.Abs(geoBreakWidth * i).ToString(), font).Width / 2), 0);
                leftStart = leftStart + breakWidth;
            }
            if (geoBreakWidth > 1000)

                g.DrawString("km", font, scaleBrush, leftStart - breakWidth + (fontHeight / 2), fontHeight * 1.1f);
            else
                g.DrawString("m", font, scaleBrush, leftStart - breakWidth + (fontHeight / 2), fontHeight * 1.1f);

            //Restore the old transform
            g.Transform = oldTransform;
            g.TextRenderingHint = oldHint;

#endregion

add more two function 

 

 private static double GetConversionFactor(string mapWinUnits)  
      {            switch (mapWinUnits.ToLower())          
  {               
		 case "lat/long":                    return (4366141.73);  
             	 case "meters":                    return (39.3700787);                
		case "centimeters":                    return (0.393700787);               
		 case "feet":                    return (12);               
		 case "inches":                    return (1);                
		case "kilometers":                    return (39370.0787);              
	  case "miles":                    return (63360);               
	case "millimeters":                    return (0.0393700787);                
	case "yards":                    return (36);     
           default:                    return (0);         
   }      
  }       

public Int64 Scale(int sizeWidth)       
 {            
        return Convert.ToInt64((UnitMeterConversion() * ViewExtents.Width * 39.3700787 * 100D) / sizeWidth);      
              }
Jan 9, 2013 at 1:05 AM
Edited Jan 9, 2013 at 1:12 AM

I am sorry! i can't share full my project because this is project of many developer!

But!

Anything in the map that you see! i can share to everyone. Example scale bar!

Thank!

Jan 9, 2013 at 3:38 AM

Please post into code frame !

Cho vào khung code nhìn cho dễ :D

Jan 9, 2013 at 4:26 AM

cho the lao? bao cai :d

Jan 9, 2013 at 4:27 AM
trungdung143 wrote:

Please post into code frame !

Cho vào khung code nhìn cho dễ :D

cho the lao bao cai :d

Jan 9, 2013 at 4:43 AM

Ok! code insert to code sniper :d

Jan 9, 2013 at 5:48 AM

@tranghv:

Với một web GIS, bạn nên đặt extent cho nó để không phải reload khi move chuột. Request nhiều lần sẽ làm server chậm !

With the a GIS web, you should set extent for it to not reload when move the mouse. Many requests will slow down the server!

Jan 9, 2013 at 6:36 AM
Edited Jan 9, 2013 at 6:38 AM
trungdung143 wrote:

@tranghv:

Với một web GIS, bạn nên đặt extent cho nó để không phải reload khi move chuột. Request nhiều lần sẽ làm server chậm !

With the a GIS web, you should set extent for it to not reload when move the mouse. Many requests will slow down the server!

Hi Trung!

Mình thực sự mới làm bản đồ thôi! và minh chịu trách nhiệm phần hiển thị bản đồ với mã nguồn mở này! Nhiều phần mình chưa nắm rõ lắm đâu!

Mình không hiểu vấn đề bạn nói lắm! bạn có thể nói rõ hơn được không! Vì di chuột hay scrol chuột thì cũng đều phải callbackserver cả mà!

Cảm ơn bạn!

Jan 9, 2013 at 7:37 AM
tranghv wrote:

Hi Trung!

Mình thực sự mới làm bản đồ thôi! và minh chịu trách nhiệm phần hiển thị bản đồ với mã nguồn mở này! Nhiều phần mình chưa nắm rõ lắm đâu!

Mình không hiểu vấn đề bạn nói lắm! bạn có thể nói rõ hơn được không! Vì di chuột hay scrol chuột thì cũng đều phải callbackserver cả mà!

Cảm ơn bạn!

Mình tên Dũng ^^ !

Ứng dụng của bạn callbackserver để làm gì ?

Theo nhưng mình truy cập vào trang ứng dụng của bạn thì mỗi khi mình di chuột dù chỉ 1 chút cũng reload lại map nhưng vậy là nếu mình di lung tung thì có thể server của bạn sẽ phải chịu rất nhiều request xử lý. Như vậy là không tối ưu. Không biết là đúng như vậy không ? di chuột nhẹ là reload à ?

Jan 9, 2013 at 9:21 AM
trungdung143 wrote:
tranghv wrote:

Hi Trung!

Mình thực sự mới làm bản đồ thôi! và minh chịu trách nhiệm phần hiển thị bản đồ với mã nguồn mở này! Nhiều phần mình chưa nắm rõ lắm đâu!

Mình không hiểu vấn đề bạn nói lắm! bạn có thể nói rõ hơn được không! Vì di chuột hay scrol chuột thì cũng đều phải callbackserver cả mà!

Cảm ơn bạn!

Mình tên Dũng ^^ !

Ứng dụng của bạn callbackserver để làm gì ?

Theo nhưng mình truy cập vào trang ứng dụng của bạn thì mỗi khi mình di chuột dù chỉ 1 chút cũng reload lại map nhưng vậy là nếu mình di lung tung thì có thể server của bạn sẽ phải chịu rất nhiều request xử lý. Như vậy là không tối ưu. Không biết là đúng như vậy không ? di chuột nhẹ là reload à ?

A theo mình nghĩ thì bạn holdclick and move chứ, bản đồ chỉ reload khi holdclik và zoomin zoom out thoi! Khong dung callback server thì mình cũng chưa nghĩ ra cách nào! Ngay cả google map cũng phải reload nữa, hơn nữa ở đây sử dụng cả WMT nên cũng phải reload thôi. Hiện tại mình dùng callbackserver và imagehandler! nếu bạn có cách nào tốt hơn có thể share cho mình không! mình cũng sợ là sau này sẽ làm server nặng!

Jan 9, 2013 at 8:28 PM

tranghv and trungdung143....

Remember the forum rules, especially that is English...

tranghv remember too, this page is CodePlexProject Hosting for Open Source Software, but if you don't want to share your code no problem, but if you keep creating forums only for your personal purposes, one don't may want to return to help you, because those are not the policies CodePlex ...

As for your project looks interesting but I do not see any relationship with dotspatial, so I was interested in you sharing it. If you're interested in developing WebGIS   I recommend using "GMap.NET - Great Maps for Windows Forms & Presentation" this is the link page http://greatmaps.codeplex.com

Jan 10, 2013 at 1:07 AM
camiza wrote:

tranghv and trungdung143....

Remember the forum rules, especially that is English...

tranghv remember too, this page is CodePlexProject Hosting for Open Source Software, but if you don't want to share your code no problem, but if you keep creating forums only for your personal purposes, one don't may want to return to help you, because those are not the policies CodePlex ...

As for your project looks interesting but I do not see any relationship with dotspatial, so I was interested in you sharing it. If you're interested in developing WebGIS   I recommend using "GMap.NET - Great Maps for Windows Forms & Presentation" this is the link page http://greatmaps.codeplex.com

 

Hi Camiza!

I want to share the code! but how! I can not share full project! Moreover this code are in the source code.You are interested in any component on my map! I will send, share the code for you right away, for example, scale bar I gave up. And the other problem with Webmap of my Dotspatial always willing to share, if I know!

Jan 10, 2013 at 1:55 AM

Hi camiza !

I'm sorry ^^! we are poor English !

We will switch to use English

Jan 10, 2013 at 2:20 PM

Hi tranghv and trungdung143

Their English is not so bad that one usually finds in the forums and  there is no problem for me with your english...

 

For code sharing...

In this link page http://www.codeplex.com, click on CreateProject and follow the instructions....

 

I hope that the link http://greatmaps.codeplex.com has been helpful....

Aug 29, 2014 at 9:10 AM
camiza wrote:
....; I hope that the link http://greatmaps.codeplex.com has been helpful....
Thanks a lot!
Sep 10, 2014 at 9:43 AM
The web site looks like a Google Maps web site. I do not see the connection to dotSpatial. How is dotSpatial used in the website http://cticdss.gencomnet.org/default.aspx ?