Rob,我相信有更好的方法来做到这一点,但这是我实现它的方式。
我准备给你的解决方案应该允许你将标记添加到Mapbox地图(搜索“omnivore mapbox”以获取可以通过Web应用程序访问的Web应用程序CSV导入等效TileMill添加数据源功能)和从连接到MS SQL数据库的GridView生成的CSV文件中获取其数据。
我有同样的问题,数据是在SQL 2008中,我需要使用它来创建一个地图。 Mapbox需要CSV或POSTGRESQL来显示引脚,但我没有在任何地方设置POSTGRESQL服务器。 这里是我做过什么: (请注意,我使用C#和创建ASP NET Web应用程序)
- 创建一个空ASPX页面,我们称之为DataGridView.aspx
- 添加一个GridView
- 将GridView链接到您的SQL数据源
- 创建一个按钮,将其命名为“Refresh CSV”
- 双击它可以自动为该按钮创建一个事件。
在针对该按钮的事件代码,使用这段代码:
protected void Button1_Click(object sender, EventArgs e)
{
GridView1.AllowPaging = false;
GridView1.DataBind();
StringBuilder sb = new StringBuilder();
for (int k = 0; k < GridView1.Columns.Count; k++)
{
if(k==0) // little trick to avoid comma at the end of the line
{
sb.Append(GridView1.Columns[k].HeaderText);
continue;
}
//add separator
sb.Append(',' + GridView1.Columns[k].HeaderText);
}
//append new line
sb.Append("\r\n");
for (int i = 0; i < GridView1.Rows.Count; i++)
{
for (int k = 0; k < GridView1.Columns.Count ; k++)
{
if (k == 0) // little trick to avoid comma at the end of the line
{
sb.Append(GridView1.Rows[i].Cells[k].Text);
continue;
}
//add separator
sb.Append(','+GridView1.Rows[i].Cells[k].Text);
}
//append new line
sb.Append("\r\n");
}
string a= string.Empty;
StreamWriter yourStream = File.CreateText(Server.MapPath("~/CSVExport.csv"));
a = sb.ToString()+"\r\n"; //formatting text based on poeition
yourStream.Write(a);
yourStream.Close();
}
不要忘记你的DataGridView.aspx.cs的开始有这些文件
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;
using System.Text;
在您的Web应用程序的根目录下,创建一个空文件,将其命名为“CSVExport.csv”。
这会将您的GridView数据格式化为CSV格式。
现在,每次单击该按钮时,都应更新CSVExport.csv文件。
要检查一切显示是否正确,请启动TileMill并运行(在本地调试运行)您的网站。
转到[本地主机:whateverthatportnumberis] /DataGridView.aspx
单击按钮。 打开CSVExport.csv检查,如果您的文件已被更新(你应该看到CSV文件格式的数据。)现在
,不停止你的本地网站的测试,继续使用该链接在TileMill CSV文件 [localhost:whateverthatportnumberis] /CSVExport.csv
如果您的CSVExport.csv文件格式正确,您应该看到显示的标记。 这应该回答你的问题,关于如何从SQL获取你的数据到一个可以被Mapbox使用的CSV格式。 当你说:“是否有更好的方法来创建必须在本地访问的地理映射应用程序?”。所以我会在这里停下来。
同样,我刚刚给你的解决方案应该允许你将标记添加到Mapbox地图(搜索“omnivore mapbox”以获取可通过Web应用程序访问的Web应用程序CSV导入等效TileMill添加数据源功能)和从连接到MS SQL数据库的GridView生成的CSV文件中获取其数据。
一旦我这样做,我可以下载地图文件到我自己的服务器,而不是托管在地图盒上吗?我的应用程序无法访问任何外部链接。另外,当我在TileMill中创建地图时,它会要求数据源(csv文件等),我只是链接到一个空的csv文件以通过此步骤? – rob