体育资讯网

您现在的位置是:首页 > 足球教学 > 正文

足球教学

开发一个gis系统源码(gis软件开发)

hacker2022-06-08 19:32:19足球教学71
本文目录一览:1、如何使用国际开源项目构建一个完整的GIS(地理信息)应用系统

本文目录一览:

如何使用国际开源项目构建一个完整的GIS(地理信息)应用系统

1、GIS内核 Geotools Geotools是一套基于Java平台的开源GIS API中间件开发一个gis系统源码,实现了完整的GIS底层功能。

2、空间数据导入/转换地理数据的获取 地理数据来自文件、数据库和WMS/WFS服务器。

文件方式开发一个gis系统源码:支持读取的地理数据文件:ESRI Shape、Mapinfo Tab/Mif、Geomedia Access等开发一个gis系统源码,建议使用Shape文件格式开发一个gis系统源码,Oracle和PostgreSQL提供Shape文件导入数据库的程序。

WMS/WFS服务器:Internet上有很多开放的GIS应用服务器,例如NASA、InterGraph、TerraServer等,通过它们获取各种免费地图资源。

Google Map资源:Google Map没有采用标准的WMS/WFS协议,可以通过调用开放的Google Map API,附加自定义的WMS/WFS图层,实现应用目的。例如:通过Google Map可以免费获取高分辨的Google Map卫星地图。

3、空间数据引擎

开源:PostgreSQL(PostGIS)、MySQL(4.1以上)

商业:Oracle、DB2、ArcSDE

开源商业空间数据库推荐使用PostgreSQL。

使用商业空间数据库引擎,例如Oracle Spatial、ArcSDE,可以非常方便的处理地理数据,更好的处理海量数据,以及与现有商业软件共享数据。

4、应用服务器 Geoserver Geoserver是一个基于J2EE的开放的GIS应用服务器,实现了OGC(Open Geospatial Consortium)制定的WMS和WFS(WFS-T)规范,Geoserver是整个GIS应用系统的中枢部分,承担大部分业务处理任务。(新版本(1.3.3)增加了对Google Earth KML/KMZ的支持。)

需要注意的是,Geoserver不只是WebGIS服务器,它可以为桌面应用程序(Udig、Mapinfo)或移动设备(支持J2ME的PDA、手机)提供地图支持。

5、桌面应用程序(C/S) Udig、GVSig

Udig 是一个使用Eclipse RCP和GeoTools构建的桌面地理信息系统,采用Eclipse SWT图形组件,具有更快的运行速度。Udig可以直接读取Shape文件,访问DB2或Oracle空间数据库,访问OGC WMS/WFS服务器。 Udig提供浏览、查询、编辑、测量等基本的GIS操作功能。

6、Web应用程序(B/S) Mapbuilder Mapbuilder是一个采用AJAX(Asynchronous JavaScript and XML)技术开发的WebGIS客户端,它的内部结构基于MVC(Model-View-Controller),具有良好的可读性和可扩展性,兼容 Firefox 1.0+, Internet Explorer 6.0+, Mozilla 1.3+, Navigator 6+等浏览器。

开源GIS源代码

C#是最多的了,不过新技术的产生flex、Silverlight等逐渐热门了起来,完整的源代码实在不多,也要看用的什么平台,开源gis开发起来功能还是有限,基于esri和mapinfo的二次开发还占较多数。

在james网站有不少mapinfo相关开发的代码

esri中国社区里交流的人也比较多

再有就是csdn里找找吧,有不少人的博客写的很好

怎么开发一个webgis系统啊

你可以使用mapinfo公司的mapxtreme这样商业软件来二次开发,也可以用一些开源的平台,如openlayers。你看看哈图公司的webmap满足你的要求不

在VC++6.0中如何用Mapx进行GIS系统的开发,或者给一个小的项目源代码也行呀?!

利用GIS 工具软件生产厂家提供的建立在OCX 技术基础上的GIS 功能控件开发一个gis系统源码,如ESRI

的MapObjects、MapInfo 公司的MapX 等开发一个gis系统源码,在Delphi 等编程工具编制的应用程序中,直

接将GIS 功能嵌入其中,实现地理信息系统的各种功能。

需要先下载mapx控件,然后就可以在VC环境中,加入该控件,你当然可以选择在对话框上直接插入控件mapx,当做一个控件使用,也可以在文档视图中插入控件,将相应类文件加入其中,包含开发一个gis系统源码了mapx.h 文件后,可以定义相应变量,在OnCreate中创建,还可以做其他事情,下面是一个代码,仅供参考。

// GeoExpertView.h : interface of the CGeoExpertView class

//

/////////////////////////////////////////////////////////////////////////////

#if !defined(AFX_GEOEXPERTVIEW_H__3456F63F_3DC9_493F_8817_DAA44E0779AE__INCLUDED_)

#define AFX_GEOEXPERTVIEW_H__3456F63F_3DC9_493F_8817_DAA44E0779AE__INCLUDED_

#if _MSC_VER 1000

#pragma once

#endif // _MSC_VER 1000

#include "MapX.h"

class CGeoExpertView : public CView

{

protected: // create from serialization only

CGeoExpertView();

DECLARE_DYNCREATE(CGeoExpertView)

// Attributes

public:

CGeoExpertDoc* GetDocument();

// Operations

public:

// Overrides

// ClassWizard generated virtual function overrides

//{{AFX_VIRTUAL(CGeoExpertView)

public:

virtual void OnDraw(CDC* pDC); // overridden to draw this view

virtual BOOL PreCreateWindow(CREATESTRUCT cs);

protected:

virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);

virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo);

virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo);

//}}AFX_VIRTUAL

// Implementation

public:

CString m_strFilePath;

CMapX m_ctrlMapX;

virtual ~CGeoExpertView();

#ifdef _DEBUG

virtual void AssertValid() const;

virtual void Dump(CDumpContext dc) const;

#endif

protected:

// Generated message map functions

protected:

//{{AFX_MSG(CGeoExpertView)

afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);

afx_msg void OnSize(UINT nType, int cx, int cy);

afx_msg void OnSetFocus(CWnd* pOldWnd);

afx_msg void OnFileOpen();

afx_msg void OnMapToolArrow();

afx_msg void OnMapToolZoomin();

afx_msg void OnMapToolZoomout();

afx_msg void OnMapToolPan();

afx_msg void OnMapToolSelect();

afx_msg void OnMapToolRectangleselect();

afx_msg void OnMapToolRadiusselect();

afx_msg void OnViewLayercontrol();

afx_msg void OnMapToolEntire();

afx_msg void OnUpdateMapToolZoomin(CCmdUI* pCmdUI);

afx_msg void OnUpdateMapToolZoomout(CCmdUI* pCmdUI);

afx_msg void OnUpdateMapToolPan(CCmdUI* pCmdUI);

afx_msg void OnUpdateMapToolArrow(CCmdUI* pCmdUI);

afx_msg void OnUpdateMapToolSelect(CCmdUI* pCmdUI);

afx_msg void OnUpdateMapToolRectangleselect(CCmdUI* pCmdUI);

afx_msg void OnUpdateMapToolRadiusselect(CCmdUI* pCmdUI);

afx_msg void OnMapToolCenter();

afx_msg void OnUpdateMapToolCenter(CCmdUI* pCmdUI);

//}}AFX_MSG

DECLARE_MESSAGE_MAP()

};

#ifndef _DEBUG // debug version in GeoExpertView.cpp

inline CGeoExpertDoc* CGeoExpertView::GetDocument()

{ return (CGeoExpertDoc*)m_pDocument; }

#endif

/////////////////////////////////////////////////////////////////////////////

//{{AFX_INSERT_LOCATION}}

// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_GEOEXPERTVIEW_H__3456F63F_3DC9_493F_8817_DAA44E0779AE__INCLUDED_)

// GeoExpertView.cpp : implementation of the CGeoExpertView class

//

#include "stdafx.h"

#include "GeoExpert.h"

#include "GeoExpertDoc.h"

#include "GeoExpertView.h"

#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILE

static char THIS_FILE[] = __FILE__;

#endif

/////////////////////////////////////////////////////////////////////////////

// CGeoExpertView

IMPLEMENT_DYNCREATE(CGeoExpertView, CView)

BEGIN_MESSAGE_MAP(CGeoExpertView, CView)

//{{AFX_MSG_MAP(CGeoExpertView)

ON_WM_CREATE()

ON_WM_SIZE()

ON_WM_SETFOCUS()

ON_COMMAND(ID_FILE_OPEN, OnFileOpen)

ON_COMMAND(ID_MAP_TOOL_ARROW, OnMapToolArrow)

ON_COMMAND(ID_MAP_TOOL_ZOOMIN, OnMapToolZoomin)

ON_COMMAND(ID_MAP_TOOL_ZOOMOUT, OnMapToolZoomout)

ON_COMMAND(ID_MAP_TOOL_PAN, OnMapToolPan)

ON_COMMAND(ID_MAP_TOOL_SELECT, OnMapToolSelect)

ON_COMMAND(ID_MAP_TOOL_RECTANGLESELECT, OnMapToolRectangleselect)

ON_COMMAND(ID_MAP_TOOL_RADIUSSELECT, OnMapToolRadiusselect)

ON_COMMAND(ID_VIEW_LAYERCONTROL, OnViewLayercontrol)

ON_COMMAND(ID_MAP_TOOL_ENTIRE, OnMapToolEntire)

ON_UPDATE_COMMAND_UI(ID_MAP_TOOL_ZOOMIN, OnUpdateMapToolZoomin)

ON_UPDATE_COMMAND_UI(ID_MAP_TOOL_ZOOMOUT, OnUpdateMapToolZoomout)

ON_UPDATE_COMMAND_UI(ID_MAP_TOOL_PAN, OnUpdateMapToolPan)

ON_UPDATE_COMMAND_UI(ID_MAP_TOOL_ARROW, OnUpdateMapToolArrow)

ON_UPDATE_COMMAND_UI(ID_MAP_TOOL_SELECT, OnUpdateMapToolSelect)

ON_UPDATE_COMMAND_UI(ID_MAP_TOOL_RECTANGLESELECT, OnUpdateMapToolRectangleselect)

ON_UPDATE_COMMAND_UI(ID_MAP_TOOL_RADIUSSELECT, OnUpdateMapToolRadiusselect)

ON_COMMAND(ID_MAP_TOOL_CENTER, OnMapToolCenter)

ON_UPDATE_COMMAND_UI(ID_MAP_TOOL_CENTER, OnUpdateMapToolCenter)

//}}AFX_MSG_MAP

// Standard printing commands

ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)

ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)

ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)

END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////

// CGeoExpertView construction/destruction

CGeoExpertView::CGeoExpertView()

{

// TODO: add construction code here

}

CGeoExpertView::~CGeoExpertView()

{

}

BOOL CGeoExpertView::PreCreateWindow(CREATESTRUCT cs)

{

// TODO: Modify the Window class or styles here by modifying

// the CREATESTRUCT cs

return CView::PreCreateWindow(cs);

}

/////////////////////////////////////////////////////////////////////////////

// CGeoExpertView drawing

void CGeoExpertView::OnDraw(CDC* pDC)

{

CGeoExpertDoc* pDoc = GetDocument();

ASSERT_VALID(pDoc);

// TODO: add draw code for native data here

}

/////////////////////////////////////////////////////////////////////////////

// CGeoExpertView printing

BOOL CGeoExpertView::OnPreparePrinting(CPrintInfo* pInfo)

{

// default preparation

return DoPreparePrinting(pInfo);

}

void CGeoExpertView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)

{

// TODO: add extra initialization before printing

}

void CGeoExpertView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)

{

// TODO: add cleanup after printing

}

/////////////////////////////////////////////////////////////////////////////

// CGeoExpertView diagnostics

#ifdef _DEBUG

void CGeoExpertView::AssertValid() const

{

CView::AssertValid();

}

void CGeoExpertView::Dump(CDumpContext dc) const

{

CView::Dump(dc);

}

CGeoExpertDoc* CGeoExpertView::GetDocument() // non-debug version is inline

{

ASSERT(m_pDocument-IsKindOf(RUNTIME_CLASS(CGeoExpertDoc)));

return (CGeoExpertDoc*)m_pDocument;

}

#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////

// CGeoExpertView message handlers

int CGeoExpertView::OnCreate(LPCREATESTRUCT lpCreateStruct)

{

if (CView::OnCreate(lpCreateStruct) == -1)

return -1;

// TODO: Add your specialized creation code here

RECT windRect;

GetClientRect(windRect);

if (!m_ctrlMapX.Create(NULL, WS_VISIBLE, windRect, this,IDC_MAP))

return -1;

return 0;

}

void CGeoExpertView::OnSize(UINT nType, int cx, int cy)

{

CView::OnSize(nType, cx, cy);

// TODO: Add your message handler code here

//if (cx != 0 cy != 0)

if (m_ctrlMapX.m_hWnd != NULL)

m_ctrlMapX.MoveWindow(0,0,cx,cy,TRUE);

}

void CGeoExpertView::OnSetFocus(CWnd* pOldWnd)

{

CView::OnSetFocus(pOldWnd);

// TODO: Add your message handler code here

m_ctrlMapX.SetFocus();

}

static char BASED_CODE szTabFilter[] = "MapInfo Map Files (*.gst)|*.gst|All Files (*.*)|*.*||";

void CGeoExpertView::OnFileOpen()

{

// TODO: Add your command handler code here

CFileDialog dlgFile(TRUE, "*.gst", NULL, OFN_HIDEREADONLY , szTabFilter, this);

dlgFile.m_ofn.lpstrTitle = "Open MapInfo Map";

if (dlgFile.DoModal() == IDCANCEL)

return;

m_strFilePath = dlgFile.GetPathName();

try {

// Close the existing set of map layers and load the Canada map

TRACE0("Old Geoset: " + m_ctrlMapX.GetGeoSet());

m_ctrlMapX.SetGeoSet(m_strFilePath);

//m_ctrlMapX.SetTitleText("");

TRACE0("New Geoset: " + m_ctrlMapX.GetGeoSet());

}

catch (COleDispatchException *e) {

e-ReportError();

e-Delete();

}

catch (COleException *e) {

e-ReportError();

e-Delete();

}

}

void CGeoExpertView::OnMapToolArrow()

{

// TODO: Add your command handler code here

m_ctrlMapX.SetCurrentTool(miArrowTool);

}

void CGeoExpertView::OnMapToolZoomin()

{

// TODO: Add your command handler code here

m_ctrlMapX.SetCurrentTool(miZoomInTool);

}

void CGeoExpertView::OnMapToolZoomout()

{

// TODO: Add your command handler code here

m_ctrlMapX.SetCurrentTool(miZoomOutTool);

}

void CGeoExpertView::OnMapToolPan()

{

// TODO: Add your command handler code here

m_ctrlMapX.SetCurrentTool(miPanTool);

}

void CGeoExpertView::OnMapToolSelect()

{

// TODO: Add your command handler code here

m_ctrlMapX.SetCurrentTool(miSelectTool);

}

void CGeoExpertView::OnMapToolRectangleselect()

{

// TODO: Add your command handler code here

m_ctrlMapX.SetCurrentTool(miRectSelectTool);

}

void CGeoExpertView::OnMapToolRadiusselect()

{

// TODO: Add your command handler code here

m_ctrlMapX.SetCurrentTool(miRadiusSelectTool);

}

void CGeoExpertView::OnMapToolCenter()

{

// TODO: Add your command handler code here

m_ctrlMapX.SetCurrentTool(miCenterTool);

}

void CGeoExpertView::OnMapToolEntire()

{

// TODO: Add your command handler code here

/*

try {

m_ctrlMapX.SetZoom(m_ctrlMapX.GetGeoSetWidth());

}

catch (COleDispatchException *e) {

e-ReportError();

e-Delete();

}

catch (COleException *e) {

e-ReportError();

e-Delete();

}

*/

m_ctrlMapX.SetGeoSet(m_strFilePath);

}

void CGeoExpertView::OnViewLayercontrol()

{

// TODO: Add your command handler code here

try {

VARIANT vHelpFile, vHelpID; // mark as optional since we don't have a helpfile

vHelpFile.vt = VT_ERROR;

vHelpFile.scode = DISP_E_PARAMNOTFOUND;

vHelpID.vt = VT_ERROR;

vHelpID.scode = DISP_E_PARAMNOTFOUND;

CMapXLayers layers = m_ctrlMapX.GetLayers();

layers.LayersDlg(vHelpFile, vHelpID);

}

catch (COleDispatchException *e) {

e-ReportError();

e-Delete();

}

catch (COleException *e) {

e-ReportError();

e-Delete();

}

}

void CGeoExpertView::OnUpdateMapToolArrow(CCmdUI* pCmdUI)

{

// TODO: Add your command update UI handler code here

if (m_ctrlMapX.m_hWnd != NULL)

{

pCmdUI-Enable(TRUE);

}

else

{

pCmdUI-Enable(FALSE);

}

pCmdUI-SetCheck(m_ctrlMapX.GetCurrentTool() == miArrowTool);

}

void CGeoExpertView::OnUpdateMapToolZoomin(CCmdUI* pCmdUI)

{

// TODO: Add your command update UI handler code here

if (m_ctrlMapX.m_hWnd != NULL)

{

pCmdUI-Enable(TRUE);

}

else

{

pCmdUI-Enable(FALSE);

}

pCmdUI-SetCheck(m_ctrlMapX.GetCurrentTool() == miZoomInTool);

}

void CGeoExpertView::OnUpdateMapToolZoomout(CCmdUI* pCmdUI)

{

// TODO: Add your command update UI handler code here

if (m_ctrlMapX.m_hWnd != NULL)

{

pCmdUI-Enable(TRUE);

}

else

{

pCmdUI-Enable(FALSE);

}

pCmdUI-SetCheck(m_ctrlMapX.GetCurrentTool() == miZoomOutTool);

}

void CGeoExpertView::OnUpdateMapToolPan(CCmdUI* pCmdUI)

{

// TODO: Add your command update UI handler code here

if (m_ctrlMapX.m_hWnd != NULL)

{

pCmdUI-Enable(TRUE);

}

else

{

pCmdUI-Enable(FALSE);

}

pCmdUI-SetCheck(m_ctrlMapX.GetCurrentTool() == miPanTool);

}

void CGeoExpertView::OnUpdateMapToolSelect(CCmdUI* pCmdUI)

{

// TODO: Add your command update UI handler code here

if (m_ctrlMapX.m_hWnd != NULL)

{

pCmdUI-Enable(TRUE);

}

else

{

pCmdUI-Enable(FALSE);

}

pCmdUI-SetCheck(m_ctrlMapX.GetCurrentTool() == miSelectTool);

}

void CGeoExpertView::OnUpdateMapToolRectangleselect(CCmdUI* pCmdUI)

{

// TODO: Add your command update UI handler code here

if (m_ctrlMapX.m_hWnd != NULL)

{

pCmdUI-Enable(TRUE);

}

else

{

pCmdUI-Enable(FALSE);

}

pCmdUI-SetCheck(m_ctrlMapX.GetCurrentTool() == miRectSelectTool);

}

void CGeoExpertView::OnUpdateMapToolRadiusselect(CCmdUI* pCmdUI)

{

// TODO: Add your command update UI handler code here

if (m_ctrlMapX.m_hWnd != NULL)

{

pCmdUI-Enable(TRUE);

}

else

{

pCmdUI-Enable(FALSE);

}

pCmdUI-SetCheck(m_ctrlMapX.GetCurrentTool() == miRadiusSelectTool);

}

void CGeoExpertView::OnUpdateMapToolCenter(CCmdUI* pCmdUI)

{

// TODO: Add your command update UI handler code here

if (m_ctrlMapX.m_hWnd != NULL)

{

pCmdUI-Enable(TRUE);

}

else

{

pCmdUI-Enable(FALSE);

}

pCmdUI-SetCheck(m_ctrlMapX.GetCurrentTool() == miCenterTool);

}

发表评论

评论列表

  • 慵吋二奴(2022-06-09 00:50:51)回复取消回复

    ///#if !defined(AFX_GEOEXPERTVIEW_H__3456F63F_3DC9_493F_8817_DAA44E0779AE__INCLUDED_)#define AFX_GEOEXPERTVIEW_H__3456F63F_3DC9_493F_881

  • 柔侣走野(2022-06-09 03:26:31)回复取消回复

    _ctrlMapX.GetCurrentTool() == miArrowTool);}void CGeoExpertView::OnUpdateMapToolZoomin(CCmdUI* pCmdUI) {

  • 绿邪梦冥(2022-06-09 07:24:55)回复取消回复

    Standard printing commands ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint) ON_COMMAND(

  • 语酌池木(2022-06-08 21:54:17)回复取消回复

    SE); } pCmdUI-SetCheck(m_ctrlMapX.GetCurrentTool() == miSelectTool);}void CGeoExpertView::

  • 弦久望喜(2022-06-09 01:35:16)回复取消回复

    于MVC(Model-View-Controller),具有良好的可读性和可扩展性,兼容 Firefox 1.0+, Internet Explorer 6.0+, Mozilla 1.3+, Navigator 6+等浏览器。开源GIS