Tim Hibbard

CEO for EnGraph software
posts - 628 , comments - 1631 , trackbacks - 459

My Links

News



Add to Google

Twitter












Tag Cloud

Article Categories

Archives

Post Categories

Image Galleries

EnGraph Blogs

Links

Other

Roll

VB.net code for adding GeoRSS tags to the FeedMap service

This code shows how to use an ASPX page to render RSS with embedded GeoRSS tags.  It calls from the FeedMap service.  I talk more about the functionality in this blog post.

Imports System.Xml
Partial Class FeedMap
    Inherits System.Web.UI.Page
    Dim place As String = ""
    Dim lat As Double = 0
    Dim lon As Double = 0
    Dim count As Integer = 50
    Dim rssUrl As String = ""
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Try
            place = Request.QueryString("place")
        Catch ex As Exception
        End Try
        Try
            lat = Double.Parse(Request.QueryString("lat"))
        Catch ex As Exception
        End Try
        Try
            lon = Double.Parse(Request.QueryString("lon"))
        Catch ex As Exception
        End Try
        Try
            count = Double.Parse(Request.QueryString("count"))
        Catch ex As Exception
        End Try
        Try
            rssUrl = Request.QueryString("url")
            If rssUrl <> "" Then
                Dim inputURL As String = "http://www.feedmap.net/blogmap/services/rest.ashx?method=blogmap.getblogmap&feed=" & rssUrl
                Dim xRead As New XmlTextReader(inputURL)
                xRead.ReadStartElement()
                Do While xRead.Read = True
                    If xRead.IsStartElement = True Then
                        If xRead.Name = "latitude" Then
                            lat = Double.Parse(xRead.ReadString)
                        End If
                        If xRead.Name = "longitude" Then
                            lon = Double.Parse(xRead.ReadString)
                        End If
                    End If
                Loop
                xRead = Nothing
            End If
        Catch ex As Exception
        End Try
        BuildRSS()
    End Sub
    Private Sub BuildRSS()
        My.Response.Clear()
        My.Response.ContentType = "text/xml"
        My.Response.ContentEncoding = System.Text.Encoding.UTF8
        Dim stream As New System.IO.MemoryStream
        Dim XMLwrite As New XmlTextWriter(stream, System.Text.Encoding.UTF8)

        XMLwrite.WriteStartDocument()
        XMLwrite.WriteWhitespace(Environment.NewLine)
        XMLwrite.WriteStartElement("rss")
        XMLwrite.WriteAttributeString("version", "2.0")
        XMLwrite.WriteAttributeString("xmlns:georss", "http://www.georss.org/georss")
        XMLwrite.WriteAttributeString("xmlns:gml", "http://www.opengis.net/gml")
        XMLwrite.WriteWhitespace(Environment.NewLine)
        XMLwrite.WriteStartElement("channel")
        XMLwrite.WriteWhitespace(Environment.NewLine)
        XMLwrite.WriteElementString("generator", "TimHibbard.com")
        XMLwrite.WriteWhitespace(Environment.NewLine)
        XMLwrite.WriteElementString("title", "FeedMap RSS Feed")
        XMLwrite.WriteWhitespace(Environment.NewLine)
        XMLwrite.WriteElementString("link", "http://feedmap.net")
        XMLwrite.WriteWhitespace(Environment.NewLine)
        XMLwrite.WriteElementString("description", "GeoRSS tagged FeedMap")
        XMLwrite.WriteWhitespace(Environment.NewLine)
        XMLwrite.WriteElementString("language", "en-us")
        XMLwrite.WriteWhitespace(Environment.NewLine)
        XMLwrite.WriteElementString("managingEditor", "thibbard@engraph.com (Tim Hibbard)")
        XMLwrite.WriteWhitespace(Environment.NewLine)
        XMLwrite.WriteElementString("webMaster", "thibbard@engraph.com (Tim Hibbard)")
        XMLwrite.WriteWhitespace(Environment.NewLine)
        XMLwrite.WriteElementString("copyright", "Tim Hibbard 2006")
        XMLwrite.WriteWhitespace(Environment.NewLine)
        Dim url As String = "http://feedmap.net/blogmap/services/rest.ashx?method=blogmap.search"
        If place <> "" Then
            url += "&place=" & place
        End If
        If lat <> 0 Then
            url += "&lat=" & lat.ToString
        End If
        If lon <> 0 Then
            url += "&lon=" & lon.ToString
        End If
        url += "&count=" & count.ToString
        Dim xRead As New XmlTextReader(url)
        xRead.ReadStartElement()
        Do While xRead.Read = True
            If xRead.IsStartElement = True Then
                If xRead.Name = "blog" Then
                    Dim name As String = xRead.GetAttribute("name")
                    Dim blogUrl As String = xRead.GetAttribute("url")
                    Dim rssUrl As String = xRead.GetAttribute("xmlurl")
                    Dim feedLat As Double = 0
                    Dim feedLon As Double = 0
                    Dim city As String = ""
                    Dim state As String = ""
                    XMLwrite.WriteStartElement("item")
                    XMLwrite.WriteWhitespace(Environment.NewLine)
                    XMLwrite.WriteElementString("title", name)
                    XMLwrite.WriteWhitespace(Environment.NewLine)
                    XMLwrite.WriteElementString("link", blogUrl)
                    XMLwrite.WriteWhitespace(Environment.NewLine)
                    XMLwrite.WriteElementString("pubDate", BuildPubDate(Now))
                    XMLwrite.WriteWhitespace(Environment.NewLine)
                    XMLwrite.WriteElementString("guid", blogUrl)
                    XMLwrite.WriteWhitespace(Environment.NewLine)
                    xRead.ReadToFollowing("latitude")
                    feedLat = xRead.ReadString
                    xRead.ReadToFollowing("longitude")
                    feedLon = xRead.ReadString
                    xRead.ReadToFollowing("city")
                    city = xRead.ReadString
                    xRead.ReadToFollowing("div")
                    state = xRead.ReadString
                    Dim desc As String = "" & name & "'s blog (RSS) in " & city & ", " & state & "
"
XMLwrite.WriteElementString("description", desc) XMLwrite.WriteWhitespace(Environment.NewLine) XMLwrite.WriteElementString("author", "thibbard@engraph.com (Tim Hibbard)") XMLwrite.WriteWhitespace(Environment.NewLine) XMLwrite.WriteElementString("georss:point", feedLat & " " & feedLon) XMLwrite.WriteWhitespace(Environment.NewLine) XMLwrite.WriteEndElement() XMLwrite.WriteWhitespace(Environment.NewLine) End If End If Loop xRead.Close() xRead = Nothing XMLwrite.WriteEndElement() XMLwrite.WriteWhitespace(Environment.NewLine) XMLwrite.WriteEndElement() XMLwrite.WriteWhitespace(Environment.NewLine) XMLwrite.WriteEndDocument() XMLwrite.Flush() Dim reader As IO.StreamReader stream.Position = 0 reader = New IO.StreamReader(stream) Dim bytes() As Byte = System.Text.Encoding.UTF8.GetBytes(reader.ReadToEnd()) My.Response.BinaryWrite(bytes) My.Response.End() End Sub Private Function BuildPubDate(ByVal d As Date) As String Try Dim RV As String Dim day As String = d.Day.ToString If day.Length = 1 Then day = "0" & day Dim month As String = d.Month.ToString Select Case month Case "1" month = "January" Case "2" month = "February" Case "3" month = "March" Case "4" month = "April" Case "5" month = "May" Case "6" month = "June" Case "7" month = "July" Case "8" month = "August" Case "9" month = "September" Case "10" month = "October" Case "11" month = "November" Case "12" month = "December" End Select Dim Mtime As String = "" Dim mDate As Date = d.ToUniversalTime If mDate.Hour.ToString.Length = 1 Then Mtime = "0" & mDate.Hour.ToString Else Mtime = mDate.Hour.ToString End If Mtime += ":" If mDate.Minute.ToString.Length = 1 Then Mtime += "0" & mDate.Minute.ToString Else Mtime += mDate.Minute.ToString End If Mtime += ":" If mDate.Second.ToString.Length = 1 Then Mtime += "0" & mDate.Second.ToString Else Mtime += mDate.Second.ToString End If RV = d.DayOfWeek.ToString.Substring(0, 3) RV += ", " & day & " " & month.Substring(0, 3) RV += " " & d.Year.ToString & " " & Mtime & " GMT" Return RV Catch ex As Exception Return "" End Try End Function End Class

Print | posted on Thursday, September 21, 2006 7:08 AM |

Feedback

No comments posted yet.
Post A Comment
Title:
Name:
Email:
Website:
Comment:
Verification:
 
 

Powered by: