Been working a bit with Microsoft SQL Server 2012 and spatial features using the Geography data type. I'm using it from ADO.Net hence I make use of the Microsoft.SqlServer.Types library. Didn't take long to get annoyed about the API in there. Let's have a look. There´s a type: SqlGeography; that you can use as a parameter against SQL Server. First I created a simple polygon consisting of some coordinates (don't know where on earth since it's taken from MSDN).
Due to lack of building a polygon from actual instances SqlGeography representing points we need to do it the textual way:
var polygon = new SqlChars("POLYGON((
    -122.358 47.653, 
    -122.348 47.649, 
    -122.348 47.658, 
    -122.358 47.658, 
    -122.358 47.653))".ToCharArray());
Now we could create a standard parameter for use in our SQL:
var coordsP = (SqlParameter)cmd.CreateParameter();
coordsP.ParameterName = "pCoords";
coordsP.Direction = ParameterDirection.Input;
coordsP.SqlDbType = SqlDbType.Udt;
coordsP.UdtTypeName = "geography";
coordsP.Value = SqlGeography.STPolyFromText(polygon, 4326);
There´s a method: SqlGeography.Point(latitude, longitude, srid); that you could use to create a simple point, it would look something like this:
var point = SqlGeography.Point(
    47.653, //Latitude 
    -122.358, //Longitude
    4326); //SRID
Lets have a look at the data we inserted using the polygon created above:
select
    Coords.STAsText() Polygon,
    Coords.STPointN(1).STAsText() Point1,
    Coords.STPointN(1).Lat Point1Latitud,
    Coords.STPointN(1).Long Point1Longitude
from LocationSpatials
outputs:
Polygon
--------------          
POLYGON ((
  -122.358 47.653,
  -122.348 47.649,
  -122.348 47.658,
  -122.358 47.658,
  -122.358 47.653
))
Point1
--------------
POINT (-122.358 47.653)
Point1Latitud
--------------
47,653
Point1Longitude
--------------
-122,358
Tell me you spot it! These kind of inconsistencies drives me crazy! If I in code define a point with Latitude first and Longitude as the second argument, I sure as hell would expect that to be the layout of the STAsText methods as well. Also, isn't it cutym to have it Latitude, Longitude and not Longitude, Latitude? I hope I'm wrong, otherwise the person doing the STAsText method must have been drunk.
//Daniel
