こもれび の もり

こもれび森のイバライド 茨城県


秋晴れの下、1年生はこもれびもりのイバライドで過ごしました。 入学後学校を離れてみんなで遠足に行くのは初めてです。 最高のお天気となり、木漏れ日の中でゆったりと楽しく過ごしました。 キャンドルづくりは宝石ともお菓子とも思えるようなカラフルな材料が1年生にはうれしかったようで、自分の大好きな色と形を選んでキャンドルを作りました。 とても楽しかったようです。 「お母さんにプレゼントしたい」「自分のお部屋に飾るんだ」と話していました。 また、動物との触れ合いでは、ウマやヤギ、ヒツジなど飼育されている動物がすべて外に出ていて、興味をもって見ていました。 ウサギはお昼寝タイム。 そしてお弁当タイムでは、みんなほとんど完食。 おいしかったと笑顔いっぱいでした。 お弁当作り、ありがとうございました。 遠足に行く前に確認しためあてをすべて達成して笑顔で帰校。 大満足の一日でした。

茎崎こもれび六斗の森|つくば市公式ウェブサイト


木もれびの森ガイド 市では、特定非営利活動法人相模原こもれびと協働して、木もれびの森の歴史や動植物について総合的にまとめたガイドブックを作成しました。 相模原中央緑地の基本情報 所在地 大野台8丁目 交通 小田急線相模大野駅からバスで「大野台入口」下車、徒歩約12分• 相模原中央緑地(木もれびの森) 地図 木もれびの森マップ 市では、特定非営利活動法人相模原こもれびと協働して、木もれびの森の地図や森の中で見ることができる動植物をまとめたマップを作成しました。 。 配布場所 配布については、水みどり環境課(市役所本庁舎本館5階)、行政資料コーナー(市役所本庁舎本館1階)、緑区行政資料コーナー(緑区合同庁舎5階)、南区行政資料コーナー(南区合同庁舎4階)、大野中まちづくりセンターで行っていますが、PDF版は次からご覧いただけます。 木もれびの森ルールブック 市では、平成27年の「木もれびの森保全・活用計画」の改訂を機に、木もれびの森の保全や活用に関するルールをまとめた小冊子を作成しました。

宮城県 こもれびの森


相模原中央緑地(木もれびの森)|相模原市" title="もり こもれび の">
[…].。 詳細は専用ページでご確認ください。 2022. 20 オシャレでかわいらしい小型犬の祭典『プチフェス -Petit Chien Festival-』 愛するプティシアンと一緒に楽しむ思い出に残る一日をお過ごしください。 2021. 02 こもれび森のイバライドは「いば旅あんしん割」「地域応援クーポン券」はいば旅あんしん割・地域応援クーポン券取扱店舗 チケット窓口・お買い物・お食事・体験教室 などでご利用いただけます。 【イベント情報】 日時 :10月30日(日)9: […]• 2022. 20 2022年10月16日 日 、イタリアングレーハウンドの祭典『イタグレフェスタ2022』をこもれび森のイバライドで開催致します! 【イベント情報】 名 称 イタグレフェスタ2022 — Italian Greyhoun […]• 2022. 10 【お知らせ】「こもれび森のイバライド」連携サービス第2弾「特別宿泊パック」予約受付中! 2021年3月30日に、こもれび森のイバライドと龍ケ崎市は 施設間連携に関する包括協定書を締結しました。


もみじの若葉が葉を広げ輝いています 10. 賑やかだったゴ-ルデンウィ-クのあと は小鳥のさえずりで・・・ 10. 暖冬だったのに、雪景色に! 10. 1 新年おめでとうございます 09. 紅葉~こんな感じに! 09. 11.2. 少しずつ紅葉が進んでいます 09. 26 09. あまごの行動活発に!! 09. 雪が解けて春らしく?オウレンの花咲く 09. 17 また雪景色に...12センチ積雪 09. 20 こもれび の もり. 15 積雪60センチに!近年ない大雪 09. 14 連日の雪でクリスマスロ-ズ埋もれる 09. 10 30センチの積雪 一面銀世界 09. 09 謹賀新年 08. 24 08. 11 お問い合せ用携帯番号追加 08. 4 08. 29 地図ページ更新 08. 21 キャンプページ更新 08. 20 08. 19 冷え込み朝は積雪 08. 18 初雪 08. 16 08. 23 O氏おもてなし 08. 15 もみじ狩りのおしらせ 08. 10 木もれ陽の森ホームページ開設.。 森の中が燃えてるよう!? 13. 木魂祭開催!! 13. さわやかな風を感じながら~ 13. 夏休みもあとわずか! 13. 森に子供たちの歓声!! 13. 森の住人は今!! 13. 木魂祭開催!! 13. 木魂祭開催!! 13.3.31.春休みグルキャンで楽しく!! 13. 少しずつ紅葉始まる! 12. 10.6.木魂祭開催 12. テントサイトの水洗トイレ完成! 12. 梅雨の晴れ間、小鳥のさえずりが・・・ 12. 新年明けましておめでとうございます。 。 。 津山市木もれ陽の森キャンプ場最新情報 22. まん防延長で休業のお知らせ 21. 休業延長のお知らせ 21. まん防に伴い休業のお知らせ 21. 緊急事態宣言延長で休業 20. 森が少しずつ色づいて💛💛 16. 長い夏休み!!いい思い出いっぱいできたぁ~ 16. 雨だけど、楽しんで!! 16. 新緑の森の中での休日💛💛 16. 木魂祭開催!! 16. やわらかな陽ざしの中で -。


。 。 。 。

This article shall describe a very simple approach to working with a GPS device within the context of a C# application. This article does not address how the GPS device works or everything that can be gleaned from the NEMA 0183 string outputted from most GPS devices; rather, the article is intended for those just interested in getting the present position from a GPS and using that point to do something interesting like show you where you are on a map.

Nothing exotic or expensive was used in this project; the GPS source was a provided by my Garmin eTrex Legend handheld GPS purchased for about $100.00 (a nice little GPS but not the high end to be sure). Since my laptop provides no male serial ports, in order to connect the device I needed an adapter; for this I opted to purchase a Belkin Serial Port to USB adapter (an F5U109) which works great; the cable used to connect the device to a computer was provided with the device.

To make matters more interesting than just outputting present position, I provided the means to map the point directly into Google Maps using the query string accepted on that site populated with the current latitude and longitude of the device. I had published something similar on C# Corner a while back but without the GPS interface provided. Interestingly enough (but not surprising), if you compare the present position of the device as shown on the map versus the physical address when plotted on Google Maps, you will likely note that the GPS position is more accurate than the geocoded physical address.

NOTE: In order to retrieve the present position from the GPS device, it is necessary to configure the device to output the NEMA 0183 complaint string. Refer to your owner’s manuals to determine how to set that up with whatever device you may be using.

Figure 2: Google Maps showing the plotted present position.

The solution contains a single Windows Forms project called ReadGPS which was written in C#; the application contains two forms (frmPP.cs, frmMap.cs) and, aside from the Program.cs file, all of the code necessary to drive the application is contained in those two form classes.

Figure 3: Solution Explorer with the Project Visible.

All of the code necessary to derive present position from a GPS device is contained in this single form; the form shall be described entirely in this section.

The code for this Form class begins with the following:

C#
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports;

namespace ReadGPS
{
    public partial class frmPP : Form
    {

Following the imports, the declaration of the namespace and the Form class, the next order of business in the application is to declare a collection of member variables requiring form wide scope; these variables are contained in a defined region entitled Member Variables. The declaration of the variables follows:

C#
#region Member Variables 
    // Local variables used to hold the present
    // position as latitude and longitude
    public string Latitude;
    public string Longitude;

#endregion

The form designer contains a single serial port control along with some text boxes used to display present position as latitude and longitude, and two buttons, one of which is used to turn on and off automatic updating of present position and the other which serves to map the present position in Google Maps. The form also contains a timer control used to automatically update the coordinates, and a menu strip control which contains menu options used to change the COM port and to exit the application.

The next block of code in the Form class is the constructor; in this instance, the constructor is used to try to open the serial port given its default configuration as set in the property pages at design time. For some of the properties associated with the control, it might make sense to allow for runtime configuration changes but, aside from the COM port used to attach the device to the computer, the control is properly configured to work with the GPS device; review the settings for the serial port control in the IDE to review the settings applied.

Aside from using the wrong port setting, there is little that can go wrong here but if the initial attempt to open the port fails, the constructor will display a message box showing the user the reason for the connection failure. A failure also disables the timer control used to command present position updates and alters the text on the button used to manually disable the update timer.

C#
#region Constructor 
    /// <span class="code-SummaryComment"><summary></span>     /// Constructor     /// <span class="code-SummaryComment"></summary></span>     public frmPP()
    {
        InitializeComponent();

        // Try to open the serial port
        try
        {
            serialPort1.Open();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
            timer1.Enabled = false;
            button1.Text = "Update";
            return;
        }
    }

#endregion

Following the constructor, the event handlers used within the application are coded. The first is the timer control’s tick event; this is the heart of the application in terms of getting the latitude and longitude extracted from the NEMA 0183 string outputted from the device.

The code first checks to see if the serial port is open and, if it is, it reads the output of the device into a string variable. The string is split on the dollar sign symbol to break it up into a string array with each of the subordinate strings contained in the output. We are looking for a string beginning with GPGGA; this substring contains the latitude and longitude information we are looking for and it is comma delimited.

The whole GPGGA section contains other information besides latitude and longitude (such as time of day information, elevation, the number of satellites tracked, etc.). There are only four parts of the GPGGA section that we want, those sections contain the coordinates and the ordinals defining the position. The rest of the code converts the returned values into decimal degrees and passes them to the latitude and longitude member variables.

If we have valid coordinates, the function also enables the button used to map the point into Google Maps. If the values returned are invalid, the form will display GPS Unavailable in the latitude and longitude text boxes. If the serial port is closed, the latitude and longitude text boxes will be used to display the message COM Port Closed; in either case, the mapping button is also disabled.

C#
/// <span class="code-SummaryComment"><summary></span> /// Try to update present position if the port is setup correctly /// and the GPS device is returning values /// <span class="code-SummaryComment"></summary></span> /// <span class="code-SummaryComment"><param name="sender"></param></span> /// <span class="code-SummaryComment"><param name="e"></param></span> private void timer1_Tick(object sender, EventArgs e)
{
    if (serialPort1.IsOpen)
    {
        string data = serialPort1.ReadExisting();
        string[] strArr = data.Split('$');
        for (int i = 0; i < strArr.Length; i++)
        {
            string strTemp = strArr[i];
            string[] lineArr = strTemp.Split(',');
            if (lineArr[0] == "GPGGA")
            {
                try
                {
                    //Latitude
                    Double dLat = Convert.ToDouble(lineArr[2]);
                    dLat = dLat / 100;
                    string[] lat = dLat.ToString().Split('.');
                    Latitude = lineArr[3].ToString() +
                    lat[0].ToString() + "." +
                    ((Convert.ToDouble(lat[1]) /
                    60)).ToString("#####");

                    //Longitude
                    Double dLon = Convert.ToDouble(lineArr[4]);
                    dLon = dLon / 100;
                    string[] lon = dLon.ToString().Split('.');
                    Longitude = lineArr[5].ToString() +
                    lon[0].ToString() + "." +
                    ((Convert.ToDouble(lon[1]) /
                    60)).ToString("#####");

                    //Display
                    txtLat.Text = Latitude;
                    txtLong.Text = Longitude;

                    btnMapIt.Enabled = true;
                }
                catch
                {
                    //Cannot Read GPS values
                    txtLat.Text = "GPS Unavailable";
                    txtLong.Text = "GPS Unavailable";
                    btnMapIt.Enabled = false;
                }
            }
        }
    }
    else
    {
        txtLat.Text = "COM Port Closed";
        txtLong.Text = "COM Port Closed";
        btnMapIt.Enabled = false;
    }
}

The following button click event handler is used to enable or disable the timer used to automatically update the present position value shown in the form. The click event handler will also alter the text displayed on the button in response to enabling or disabling the timer.

C#
/// <span class="code-SummaryComment"><summary></span> /// Enable or disable the timer to start continuous /// updates or disable all updates /// <span class="code-SummaryComment"></summary></span> /// <span class="code-SummaryComment"><param name="sender"></param></span> /// <span class="code-SummaryComment"><param name="e"></param></span> private void button1_Click(object sender, EventArgs e)
{
    if (timer1.Enabled == true)
    {
        timer1.Enabled = false;
    }
    else
    {
        timer1.Enabled = true;
    }

    if (button1.Text == "Update")
        button1.Text = "Stop Updates";
    else
        button1.Text = "Update";
}

The next bit of code is merely used to exit the application in response to the exit menu option click event.

C#
/// <span class="code-SummaryComment"><summary></span> /// Exit the application /// <span class="code-SummaryComment"></summary></span> /// <span class="code-SummaryComment"><param name="sender"></param></span> /// <span class="code-SummaryComment"><param name="e"></param></span> private void exitToolStripMenuItem_Click(object sender, EventArgs e)
{
    this.Dispose();
}

The following bit of code is used to swap the serial port over to COM1.

C#
/// <span class="code-SummaryComment"><summary></span> /// Swap serialPort1 to port COM1 /// <span class="code-SummaryComment"></summary></span> /// <span class="code-SummaryComment"><param name="sender"></param></span> /// <span class="code-SummaryComment"><param name="e"></param></span> private void toolStripMenuItem2_Click(object sender, EventArgs e)
{
    try
    {
        serialPort1.Close();
        serialPort1.PortName = "COM1";
        serialPort1.Open();
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message, "COM1");
    }
}

The following bit of code is used to swap the serial port over to COM2.

C#
/// <span class="code-SummaryComment"><summary></span> /// Swap serialPort1 to port COM2 /// <span class="code-SummaryComment"></summary></span> /// <span class="code-SummaryComment"><param name="sender"></param></span> /// <span class="code-SummaryComment"><param name="e"></param></span> private void toolStripMenuItem3_Click(object sender, EventArgs e)
{
    try
    {
        serialPort1.Close();
        serialPort1.PortName = "COM2";
        serialPort1.Open();
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message, "COM2");
    }
}

The following bit of code is used to swap the serial port over to COM3.

C#
/// <span class="code-SummaryComment"><summary></span> /// Swap serialPort1 to port COM3 /// <span class="code-SummaryComment"></summary></span> /// <span class="code-SummaryComment"><param name="sender"></param></span> /// <span class="code-SummaryComment"><param name="e"></param></span> private void toolStripMenuItem4_Click(object sender, EventArgs e)
{
    try
    {
        serialPort1.Close();
        serialPort1.PortName = "COM3";
        serialPort1.Open();
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message, "COM3");
    }
}

/// <span class="code-SummaryComment"><summary></span> /// Swap serialPort1 to port COM4 /// <span class="code-SummaryComment"></summary></span> /// <span class="code-SummaryComment"><param name="sender"></param></span> /// <span class="code-SummaryComment"><param name="e"></param></span>

The following bit of code is used to swap the serial port over to COM4.

C#
private void toolStripMenuItem5_Click(object sender, EventArgs e)
{
    try
    {
        serialPort1.Close();
        serialPort1.PortName = "COM4";
        serialPort1.Open();
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message, "COM4");
    }
}

The following bit of code is used to swap the serial port over to COM5.

C#
/// <span class="code-SummaryComment"><summary></span> /// Swap serialPort1 to port COM5 /// <span class="code-SummaryComment"></summary></span> /// <span class="code-SummaryComment"><param name="sender"></param></span> /// <span class="code-SummaryComment"><param name="e"></param></span> private void toolStripMenuItem6_Click(object sender, EventArgs e)
{
    try
    {
        serialPort1.Close();
        serialPort1.PortName = "COM5";
        serialPort1.Open();
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message, "COM5");
    }
}

The next bit of code is used to open up the Map form; the Map form accepts a latitude and longitude as arguments. These arguments are passed to the new form and used to display the current location on the map.

C#
/// <span class="code-SummaryComment"><summary></span> /// Open a map of the present position /// <span class="code-SummaryComment"></summary></span> /// <span class="code-SummaryComment"><param name="sender"></param></span> /// <span class="code-SummaryComment"><param name="e"></param></span> private void btnMapIt_Click(object sender, EventArgs e)
{
    frmMap f = new frmMap(Latitude, Longitude);
    f.Show();
}

That wraps up the sum of the code used to communicate with the GPS device and to display the present position latitude and longitude from the NEMA 0183 string.

This Form class is used to display the position captured from the GPS device through Google Maps. The form contains only a single Web browser control. The code contained in the class is used to form a query string around the latitude and longitude passed to the form whenever it is instantiated. Once the query string is assembled, the browser is commanded to navigate to the location indicated in that string.

The code is pretty simple and it is presented here in its entirety:

C#
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace ReadGPS
{
    public partial class frmMap : Form
    {
        public frmMap(string lat, string lon)
        {
            InitializeComponent();

            if (lat == string.Empty || lon == string.Empty)
            {
                this.Dispose();
            }

            try
            {
                StringBuilder queryAddress = new StringBuilder();
                queryAddress.Append("http://maps.google.com/maps?q=");

                if (lat != string.Empty)
                {
                    queryAddress.Append(lat + "%2C");
                }

                if (lon != string.Empty)
                {
                    queryAddress.Append(lon);
                }

                webBrowser1.Navigate(queryAddress.ToString());
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message.ToString(), "Error");
            }
        }
    }
}

This article was intended to demonstrate a convenient means for capturing present position information from a GPS device linked to a computer through a serial port. The project could easily be extended by reviewing the contents of the NEMA 0183 standard and picking out additional information from the information captured from a GPS device.