int GenPhotoStationRecord(XmlTextWriter swloctrim, string imgname, double lat, double lng, double alt, double roll, double pitch, double yaw, int imgwidth, int imgheight, int lastRecordN)
{
Console.WriteLine("yaw {0}",yaw);
int photoStationID = lastRecordN++;
int pointRecordID = lastRecordN++;
int imageRecordID = lastRecordN++;
JXL_StationIDs.Add(photoStationID);
// conver tto rads
yaw = -yaw * deg2rad;
swloctrim.WriteStartElement("PhotoStationRecord");
swloctrim.WriteAttributeString("ID", (photoStationID).ToString("0000000"));
swloctrim.WriteElementString("StationName", Path.GetFileNameWithoutExtension(imgname));
swloctrim.WriteElementString("InstrumentHeight", "");
swloctrim.WriteStartElement("RawInstrumentHeight");
swloctrim.WriteElementString("MeasurementMethod", "TrueHeight");
swloctrim.WriteElementString("MeasuredHeight", "0");
swloctrim.WriteElementString("HorizontalOffset", "0");
swloctrim.WriteElementString("VerticalOffset", "0");
swloctrim.WriteEndElement();
swloctrim.WriteElementString("InstrumentID", "0000000E");
swloctrim.WriteElementString("AtmosphereID", "0000000F");
swloctrim.WriteElementString("StationType", "RawSensorValues");
swloctrim.WriteStartElement("DeviceAxisOrientationData");
swloctrim.WriteStartElement("DeviceAxisOrientation");
swloctrim.WriteStartElement("BiVector");
swloctrim.WriteElementString("XX", roll.ToString());
swloctrim.WriteElementString("YY", pitch.ToString());
swloctrim.WriteElementString("ZZ", yaw.ToString());
swloctrim.WriteEndElement();
swloctrim.WriteEndElement();
swloctrim.WriteEndElement();
swloctrim.WriteEndElement();
// end PhotoStationRecord
// pointrecord
swloctrim.WriteStartElement("PointRecord");
swloctrim.WriteAttributeString("ID", (pointRecordID).ToString("0000000"));
swloctrim.WriteElementString("Name", Path.GetFileNameWithoutExtension(imgname));
swloctrim.WriteElementString("Code", "");
swloctrim.WriteElementString("Method", "Coordinates");
swloctrim.WriteElementString("SurveyMethod", "Autonomous");
swloctrim.WriteElementString("Classification", "Normal");
swloctrim.WriteElementString("Deleted", "false");
swloctrim.WriteStartElement("WGS84");
swloctrim.WriteElementString("Latitude", lat.ToString());
swloctrim.WriteElementString("Longitude", lng.ToString());
swloctrim.WriteElementString("Height", alt.ToString());
swloctrim.WriteEndElement();
swloctrim.WriteEndElement();
// end point record
// imagerecord
swloctrim.WriteStartElement("ImageRecord");
swloctrim.WriteAttributeString("ID", (imageRecordID).ToString("0000000"));
swloctrim.WriteElementString("StationID", (photoStationID).ToString("0000000"));
swloctrim.WriteElementString("BackBearingID", "");
swloctrim.WriteElementString("CameraID", "00000002");
swloctrim.WriteElementString("PointRecordID", "");
swloctrim.WriteElementString("FileName", Path.GetFileName(imgname));
swloctrim.WriteElementString("HorizontalAngle", "");
swloctrim.WriteElementString("VerticalAngle", "");
swloctrim.WriteElementString("Width", imgwidth.ToString());
swloctrim.WriteElementString("Height", imgheight.ToString());
swloctrim.WriteElementString("SourceX", "0");
swloctrim.WriteElementString("SourceY", "0");
swloctrim.WriteElementString("SourceWidth", imgwidth.ToString());
swloctrim.WriteElementString("SourceHeight", imgheight.ToString());
swloctrim.WriteEndElement();
/*
<ImageRecord ID="0000056" TimeStamp="2013-04-12T10:22:21">
<StationID>0000010</StationID>
<BackBearingID/>
<CameraID>00000002</CameraID>
<PointRecordID/>
<FileName>R0011726.JPG</FileName>
<HorizontalAngle/>
<VerticalAngle/>
<Width>3648</Width>
<Height>2736</Height>
<SourceX>0</SourceX>
<SourceY>0</SourceY>
<SourceWidth>3648</SourceWidth>
<SourceHeight>2736</SourceHeight>
</ImageRecord>
* */
return lastRecordN;
}