Sample code in C# to plot a point from degree lat and long

Jun 18, 2015 at 6:28 AM
I have been searching the web but could not find a simple sample code in C# which takes lat and long in degrees double as arguments and plots it on the map. Preferably in USA. If you have a simple code please provide it. Please provide the complete code not snippets.
Developer
Jun 18, 2015 at 10:45 AM
Perhaps section 9 here.
Jun 18, 2015 at 8:58 PM
sleschinski,

Thank you very much. It worked out. Do you happen to have any example code for plotting multiple lat and log couples as a polygon?
Developer
Jun 18, 2015 at 9:33 PM
It's basically the same, just change SHP_POINT to SHP_POLYGON (in 2 places) and add cycle for points of polygon. Here is sample which generates polygon shapefile with random circles. I guess you'll be able to write what you need looking at both samples.

Hope it helps,
Sergei
Jun 19, 2015 at 6:16 PM
Sleschinski,
Again thank you very much. This helped. Now my code is working. I need one more help. I am running into problems where my sets of points are not clockwise. I even wrote the following while loop to get the proper clockwise lat,longs. But did not work out. Your help is appreciated.
Developer
Jun 19, 2015 at 6:23 PM
How about Shape.get_PartIsClockWise, Shape.ReversePointsOrder?
Jun 19, 2015 at 6:48 PM
My polygon has 4 points. So 5 points in the shape object it total. I know it is in proper sorting. Just need to make it clockwise.
while (!Shape.PartIsClockWise[0])
            {
                MapWinGIS.Shape tempshape = new Shape();
                tempshape.ShapeType = ShpfileType.SHP_POLYGON;

                tempshape.InsertPoint(Shape.get_Point(1), 0);
                tempshape.InsertPoint(Shape.get_Point(2), 1);
                tempshape.InsertPoint(Shape.get_Point(3), 2);
                tempshape.InsertPoint(Shape.get_Point(4), 3);
                tempshape.InsertPoint(Shape.get_Point(1), 4);

                Shape = tempshape;                
            }
            return Shape;
Developer
Jun 22, 2015 at 12:15 PM
Here is a sample code which demonstrates the functionality. I believe we had an issue with it in the past, so I've just tested it to make sure it works.
// it's counter-clockwise list
var list = new List<Point>()
{
    new Point() {x = 0.0, y = 0.0},
    new Point() {x = 100.0, y = 0.0},
    new Point() {x = 100.0, y = 100.0},
    new Point() {x = 0.0, y = 100.0},
    new Point() {x = 0.0, y = 0.0},
};
            
//list.Reverse();       // to make it clockwise

var shape = new Shape();
shape.Create(ShpfileType.SHP_POLYGON);

int pointIndex = 0;
foreach (var pnt in list)
{
    shape.InsertPoint(pnt, ref pointIndex);
    pointIndex++;
}

bool isClockwise = shape.PartIsClockWise[0];
Debug.Print("Is clockwise: " + isClockwise);

if (!isClockwise)
{
    if (!shape.ReversePointsOrder(0))
    {
        Debug.Print("Failed to reverse point order");
        return;
    }
}

Debug.Print("Is clockwise: " + shape.PartIsClockWise[0]);