/// <summary> /// Updates the given way by adding it's changes to the current changeset. /// </summary> /// <param name="way"></param> public void WayUpdate(Way way) { if (_current_changeset == null) { throw new InvalidOperationException("No open changeset found!"); } if (!way.Id.HasValue) { throw new ArgumentOutOfRangeException("Cannot update an object without an id!"); } // build a new node. way xml_way = way.ConvertTo(); xml_way.changeset = _current_changeset.id; xml_way.changesetSpecified = true; // encapsulate into an osm object. OsmSharp.Osm.Xml.v0_6.osm osm = new Osm.Xml.v0_6.osm(); osm.way = new Osm.Xml.v0_6.way[1]; osm.way[0] = xml_way; // serialize the changeset. XmlSerializer serializer = new XmlSerializer(typeof(OsmSharp.Osm.Xml.v0_6.osm)); MemoryStream mem_stream = new MemoryStream(); Stream stream = mem_stream; serializer.Serialize(stream, osm); stream.Flush(); mem_stream.Flush(); byte[] put_data = mem_stream.ToArray(); // do the api call. this.DoApiCall(true, string.Format("api/0.6/way/{0}", way.Id.Value), Method.PUT, put_data); }
/// <summary> /// Creates a new way by adding it to the current changeset. /// </summary> /// <param name="way"></param> public Way WayCreate(Way way) { if (_current_changeset == null) { throw new InvalidOperationException("No open changeset found!"); } // build a new node. way xml_way = way.ConvertTo(); xml_way.changeset = _current_changeset.id; xml_way.changesetSpecified = true; // encapsulate into an osm object. OsmSharp.Osm.Xml.v0_6.osm osm = new Osm.Xml.v0_6.osm(); osm.way = new Osm.Xml.v0_6.way[1]; osm.way[0] = xml_way; // serialize the changeset. XmlSerializer serializer = new XmlSerializer(typeof(OsmSharp.Osm.Xml.v0_6.osm)); MemoryStream mem_stream = new MemoryStream(); Stream stream = mem_stream; serializer.Serialize(stream, osm); stream.Flush(); mem_stream.Flush(); byte[] put_data = mem_stream.ToArray(); // do the api call. string response_string = this.DoApiCall(true, "api/0.6/way/create", Method.PUT, put_data); // get the id-response. long id; if (!long.TryParse(response_string, out id)) { // invalid response! throw new APIException(string.Format("Invalid response when creating a new way: {0}", response_string)); } way.Id = id; return way; }