├── .vscode └── settings.json ├── .prettierignore ├── src ├── react-app-env.d.ts ├── assets │ ├── logo.png │ ├── logo_icon.png │ ├── weixin.jpeg │ └── intro.svg ├── constants │ └── index.ts ├── setupTests.ts ├── data │ ├── sites │ │ ├── index.ts │ │ ├── data │ │ │ ├── groups │ │ │ │ ├── basement.ts │ │ │ │ ├── vector_data.ts │ │ │ │ ├── policy.ts │ │ │ │ ├── digital_library.ts │ │ │ │ ├── pub_data.ts │ │ │ │ ├── commonly_used.ts │ │ │ │ ├── industry_data.ts │ │ │ │ ├── sharing_station.ts │ │ │ │ └── rs_sharing_station_zh_cn.ts │ │ │ └── index.ts │ │ ├── main │ │ │ ├── index.ts │ │ │ └── groups │ │ │ │ ├── weather.ts │ │ │ │ ├── onlinemap.ts │ │ │ │ ├── coord_process.ts │ │ │ │ ├── ai_platform.ts │ │ │ │ ├── gis_tools.ts │ │ │ │ ├── data_source.ts │ │ │ │ ├── competition.ts │ │ │ │ ├── rs_platform.ts │ │ │ │ ├── visualization.ts │ │ │ │ └── awesome.ts │ │ └── tech │ │ │ ├── index.ts │ │ │ └── groups │ │ │ ├── geospatial_library │ │ │ ├── c.ts │ │ │ ├── php.ts │ │ │ ├── ruby.ts │ │ │ ├── rust.ts │ │ │ └── go.ts │ │ │ ├── map_engine.ts │ │ │ ├── 3d_applications.ts │ │ │ ├── rs_software.ts │ │ │ ├── 3d_tiles.ts │ │ │ ├── awesome.ts │ │ │ ├── mobile_develop_tools.ts │ │ │ └── spatial_database.ts │ ├── types.ts │ └── searchConfig.ts ├── App.test.tsx ├── index.css ├── reportWebVitals.ts ├── utils │ └── index.ts ├── index.tsx ├── components │ ├── app-search │ │ ├── index.tsx │ │ ├── index.css │ │ ├── WideSearch.tsx │ │ └── NarrowSearch.tsx │ ├── app-header │ │ ├── index.css │ │ └── index.tsx │ ├── mobile-sider │ │ ├── index.css │ │ └── index.tsx │ ├── app-content │ │ ├── index.css │ │ ├── component │ │ │ └── collect.tsx │ │ └── index.tsx │ └── app-sider │ │ ├── index.css │ │ └── index.tsx ├── App.css └── App.tsx ├── public ├── logo.png ├── favicon.ico ├── robots.txt ├── manifest.json └── index.html ├── .husky ├── pre-commit └── commit-msg ├── commitlint.config.cjs ├── .env.production ├── .prettierrc ├── .editorconfig ├── .gitignore ├── tsconfig.json ├── .eslintrc.cjs ├── README.md ├── .github └── ISSUE_TEMPLATE │ ├── oscp.yml │ ├── site_report.yml │ └── bug_report.yml └── package.json /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | build 2 | node_modules 3 | public 4 | -------------------------------------------------------------------------------- /src/react-app-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /public/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DipperMap/dippermap/HEAD/public/logo.png -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DipperMap/dippermap/HEAD/public/favicon.ico -------------------------------------------------------------------------------- /src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DipperMap/dippermap/HEAD/src/assets/logo.png -------------------------------------------------------------------------------- /public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /.husky/pre-commit: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | . "$(dirname -- "$0")/_/husky.sh" 3 | 4 | npm run lint 5 | -------------------------------------------------------------------------------- /commitlint.config.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: ['@commitlint/config-conventional'] 3 | } 4 | -------------------------------------------------------------------------------- /src/assets/logo_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DipperMap/dippermap/HEAD/src/assets/logo_icon.png -------------------------------------------------------------------------------- /src/assets/weixin.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DipperMap/dippermap/HEAD/src/assets/weixin.jpeg -------------------------------------------------------------------------------- /.env.production: -------------------------------------------------------------------------------- 1 | # `REACT_APP` prefix is required to expose to client-side 2 | REACT_APP_VERCEL_ANALYTICS_ID=$VERCEL_ANALYTICS_ID -------------------------------------------------------------------------------- /.husky/commit-msg: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | . "$(dirname -- "$0")/_/husky.sh" 3 | 4 | npx --no-install commitlint --edit $1 5 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "useTabs": false, 3 | "tabWidth": 2, 4 | "singleQuote": true, 5 | "trailingComma": "none", 6 | "semi": false 7 | } 8 | -------------------------------------------------------------------------------- /src/constants/index.ts: -------------------------------------------------------------------------------- 1 | import { createFromIconfontCN } from '@ant-design/icons' 2 | 3 | export const iconUrl = '//at.alicdn.com/t/a/font_4354752_k095t2a21nr.js' 4 | 5 | export const IconFont = createFromIconfontCN({ scriptUrl: iconUrl }) 6 | -------------------------------------------------------------------------------- /src/setupTests.ts: -------------------------------------------------------------------------------- 1 | // jest-dom adds custom jest matchers for asserting on DOM nodes. 2 | // allows you to do things like: 3 | // expect(element).toHaveTextContent(/react/i) 4 | // learn more: https://github.com/testing-library/jest-dom 5 | import '@testing-library/jest-dom' 6 | -------------------------------------------------------------------------------- /src/data/sites/index.ts: -------------------------------------------------------------------------------- 1 | import { ISiteConfig } from '../types' 2 | import { MainConfig } from './main' 3 | import { Tech } from './tech' 4 | import { Data } from './data' 5 | export const SitesConfig: { [key: string]: ISiteConfig } = { 6 | main: MainConfig, 7 | tech: Tech, 8 | data: Data 9 | } 10 | -------------------------------------------------------------------------------- /src/App.test.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import { render, screen } from '@testing-library/react' 3 | import App from './App' 4 | 5 | test('renders learn react link', () => { 6 | render() 7 | const linkElement = screen.getByText(/learn react/i) 8 | expect(linkElement).toBeInTheDocument() 9 | }) 10 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # EditorConfig is awesome: https://EditorConfig.org 2 | 3 | # top-most EditorConfig file 4 | root = true 5 | 6 | [*] 7 | indent_style = space 8 | indent_size = 2 9 | end_of_line = lf 10 | charset = utf-8 11 | trim_trailing_whitespace = true 12 | insert_final_newline = true 13 | 14 | [*.md] 15 | max_line_length = off 16 | trim_trailing_whitespace = false 17 | -------------------------------------------------------------------------------- /src/index.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 0; 3 | font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 4 | 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', 5 | sans-serif; 6 | -webkit-font-smoothing: antialiased; 7 | -moz-osx-font-smoothing: grayscale; 8 | } 9 | 10 | code { 11 | font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', 12 | monospace; 13 | } 14 | -------------------------------------------------------------------------------- /public/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "short_name": "DipperMap|星辰地图", 3 | "name": "星辰地图 GIS 站点导航", 4 | "icons": [ 5 | { 6 | "src": "favicon.ico", 7 | "sizes": "64x64 32x32 24x24 16x16", 8 | "type": "image/x-icon" 9 | }, 10 | { 11 | "src": "logo.png", 12 | "type": "image/png", 13 | "sizes": "192x192" 14 | } 15 | ], 16 | "start_url": ".", 17 | "display": "standalone", 18 | "theme_color": "#000000", 19 | "background_color": "#ffffff" 20 | } 21 | -------------------------------------------------------------------------------- /src/reportWebVitals.ts: -------------------------------------------------------------------------------- 1 | import { ReportHandler } from 'web-vitals' 2 | 3 | const reportWebVitals = (onPerfEntry?: ReportHandler) => { 4 | if (onPerfEntry && onPerfEntry instanceof Function) { 5 | import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => { 6 | getCLS(onPerfEntry) 7 | getFID(onPerfEntry) 8 | getFCP(onPerfEntry) 9 | getLCP(onPerfEntry) 10 | getTTFB(onPerfEntry) 11 | }) 12 | } 13 | } 14 | 15 | export default reportWebVitals 16 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # production 12 | /build 13 | /dist 14 | 15 | # misc 16 | .DS_Store 17 | .env.local 18 | .env.development.local 19 | .env.test.local 20 | .env.production.local 21 | 22 | npm-debug.log* 23 | yarn-debug.log* 24 | yarn-error.log* 25 | 26 | # Environment Variables 27 | .env 28 | .env.build 29 | .vercel 30 | package-lock.json 31 | yarn.lock 32 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "lib": ["dom", "dom.iterable", "esnext"], 5 | "allowJs": true, 6 | "skipLibCheck": true, 7 | "esModuleInterop": true, 8 | "allowSyntheticDefaultImports": true, 9 | "strict": true, 10 | "forceConsistentCasingInFileNames": true, 11 | "noFallthroughCasesInSwitch": true, 12 | "module": "esnext", 13 | "moduleResolution": "node", 14 | "resolveJsonModule": true, 15 | "isolatedModules": true, 16 | "noEmit": true, 17 | "jsx": "react-jsx" 18 | }, 19 | "include": ["src"] 20 | } 21 | -------------------------------------------------------------------------------- /src/utils/index.ts: -------------------------------------------------------------------------------- 1 | export function isMobileDevice(): boolean { 2 | const regex = 3 | /(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i 4 | return regex.test(navigator.userAgent) 5 | } 6 | 7 | export const UrlSetSite = (key: string) => { 8 | const currentUrl = new URL(window.location.href) 9 | const searchParams = new URLSearchParams(currentUrl.search) 10 | searchParams.set('site', key) 11 | currentUrl.search = searchParams.toString() 12 | window.history.pushState({}, '', currentUrl) 13 | } 14 | -------------------------------------------------------------------------------- /src/index.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import ReactDOM from 'react-dom/client' 3 | import './index.css' 4 | import App from './App' 5 | import reportWebVitals from './reportWebVitals' 6 | 7 | const root = ReactDOM.createRoot(document.getElementById('root') as HTMLElement) 8 | root.render( 9 | 10 | 11 | 12 | ) 13 | 14 | // If you want to start measuring performance in your app, pass a function 15 | // to log results (for example: reportWebVitals(console.log)) 16 | // or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals 17 | reportWebVitals() 18 | -------------------------------------------------------------------------------- /src/components/app-search/index.tsx: -------------------------------------------------------------------------------- 1 | import { searchConfig } from '../../data/searchConfig' 2 | import './index.css' 3 | import { isMobileDevice } from '../../utils' 4 | import { WideSearch } from './WideSearch' 5 | import { NarrowSearch } from './NarrowSearch' 6 | 7 | export const AppSearch = () => { 8 | return ( 9 | 18 | ) 19 | } 20 | -------------------------------------------------------------------------------- /src/components/app-header/index.css: -------------------------------------------------------------------------------- 1 | .app-header { 2 | display: flex; 3 | align-items: center; 4 | justify-content: space-between; 5 | width: 100%; 6 | } 7 | 8 | .header-right { 9 | display: flex; 10 | align-items: center; 11 | } 12 | 13 | .weChat { 14 | cursor: pointer; 15 | margin-right: 24px; 16 | } 17 | 18 | .weChatText { 19 | text-align: center; 20 | padding: 12px 12px 6px 12px; 21 | border-bottom: solid 1px #0000003b; 22 | color: #000; 23 | } 24 | 25 | .gitHub { 26 | cursor: pointer; 27 | } 28 | 29 | .header_icon { 30 | font-size: 16px; 31 | color: #676f7b; 32 | cursor: pointer; 33 | } 34 | 35 | .header_icon:hover { 36 | color: #38404d; 37 | } 38 | -------------------------------------------------------------------------------- /src/data/types.ts: -------------------------------------------------------------------------------- 1 | export type toolsType = 'tool' | 'data' | 'tool' | 'DataBase' | 'Map Server' 2 | export interface IItem { 3 | [x: string]: any 4 | icon: string 5 | name: string 6 | en_name: string 7 | description: string 8 | en_description: string 9 | site_url?: string 10 | tags: string[] 11 | github?: string 12 | order?: number 13 | favorite?: boolean 14 | } 15 | export interface IGroup { 16 | [x: string]: any 17 | icon?: any 18 | name: string 19 | en_name: string 20 | order: number 21 | children: IItem[] 22 | } 23 | export interface IConfig { 24 | [key: string]: IGroup 25 | } 26 | 27 | export interface ISiteConfig { 28 | name: string 29 | en_name: string 30 | groups: IGroup[] 31 | } 32 | -------------------------------------------------------------------------------- /src/assets/intro.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/data/sites/data/groups/basement.ts: -------------------------------------------------------------------------------- 1 | import { IGroup } from '../../../types' 2 | 3 | export const Basement: IGroup = { 4 | icon: 'icon-shujuyuan', 5 | name: '基础地理', 6 | en_name: 'Basement', 7 | order: 30, 8 | children: [ 9 | { 10 | icon: 'https://www.geonames.org/geonames.ico', 11 | name: 'GeoNames', 12 | en_name: 'GeoNames', 13 | description: 14 | 'GeoNames是一个地理数据库,覆盖所有国家,包含超过1100万个可免费下载的地名。', 15 | en_description: 16 | 'GeoNames is a geographical database that covers all countries and includes over 11 million place names available for free download.', 17 | site_url: 'http://www.geonames.org/', 18 | order: 1, 19 | tags: ['Geographic Database', 'Place Names', 'Free Download'] 20 | } 21 | ] 22 | } 23 | -------------------------------------------------------------------------------- /src/data/sites/data/groups/vector_data.ts: -------------------------------------------------------------------------------- 1 | import { IGroup } from '../../../types' 2 | 3 | export const VectorData: IGroup = { 4 | icon: 'icon-shujuyuan', 5 | name: '矢量边界', 6 | en_name: 'Commonly Used', 7 | order: 1, 8 | children: [ 9 | { 10 | icon: 'http://www.naturalearthdata.com/favicon.ico', 11 | name: '自然地球数据', 12 | en_name: 'Natural Earth Data', 13 | description: 14 | '自然地球数据提供全球范围内的矢量和影像数据。其最大优势在于数据的开放性,用户具有传播和修改数据的权限。', 15 | en_description: 16 | 'Natural Earth Data provides global vector and raster data. Its major advantage lies in the openness of the data, granting users the permission to distribute and modify the data.', 17 | site_url: 'http://www.naturalearthdata.com/', 18 | order: 1, 19 | tags: ['地理空间数据', '栅格数据', '矢量数据', '开放数据'] 20 | } 21 | ] 22 | } 23 | -------------------------------------------------------------------------------- /src/data/sites/data/groups/policy.ts: -------------------------------------------------------------------------------- 1 | import { IGroup } from '../../../types' 2 | 3 | export const Policy: IGroup = { 4 | icon: 'icon-ditupeise', 5 | name: '政策', 6 | en_name: 'Policy', 7 | order: 3, 8 | children: [ 9 | { 10 | icon: 'https://climateactiontracker.org/static/images/favicon.ico', 11 | name: 'Climate Action Tacker', 12 | en_name: 'Climate Action Tacker', 13 | description: '汇集了各国的气候变化的政策和法规', 14 | en_description: 15 | 'The Climate Action Tracker is an independent scientific project that tracks government climate action and measures it against the globally agreed Paris Agreement aim of "holding warming well below 2°C, and pursuing efforts to limit warming to 1.5°C." ', 16 | site_url: 'https://climateactiontracker.org/countries/china/targets/', 17 | order: 2, 18 | tags: ['GIS', 'Web', 'Data', 'Climate'] 19 | } 20 | ] 21 | } 22 | -------------------------------------------------------------------------------- /src/data/sites/data/index.ts: -------------------------------------------------------------------------------- 1 | import { ISiteConfig } from '../../types' 2 | import { Basement } from './groups/basement' 3 | import { CommonlyUsed } from './groups/commonly_used' 4 | import { DigitalLibrary } from './groups/digital_library' 5 | import { IndustryData } from './groups/industry_data' 6 | import { Policy } from './groups/policy' 7 | import { PubData } from './groups/pub_data' 8 | import { RSSharingStationCN } from './groups/rs_sharing_station_zh_cn' 9 | import { SharingStation } from './groups/sharing_station' 10 | import { VectorData } from './groups/vector_data' 11 | export const Data: ISiteConfig = { 12 | name: '数据资源', 13 | en_name: 'data', 14 | groups: [ 15 | Basement, 16 | CommonlyUsed, 17 | DigitalLibrary, 18 | IndustryData, 19 | RSSharingStationCN, 20 | Policy, 21 | PubData, 22 | SharingStation, 23 | VectorData 24 | ].sort((a, b) => a.order - b.order) 25 | } 26 | -------------------------------------------------------------------------------- /src/data/sites/main/index.ts: -------------------------------------------------------------------------------- 1 | import { ISiteConfig } from '../../types' 2 | import { AIPlatform } from './groups/ai_platform' 3 | import { Competition } from './groups/competition' 4 | import { CoordConvert } from './groups/coord_process' 5 | import { DataProcess } from './groups/gis_tools' 6 | import { DataSource } from './groups/data_source' 7 | import { OnlineMap } from './groups/onlinemap' 8 | import { RSPlatform } from './groups/rs_platform' 9 | import { Visulization } from './groups/visualization' 10 | import { Weather } from './groups/weather' 11 | import { Awesome } from './groups/awesome' 12 | 13 | export const MainConfig: ISiteConfig = { 14 | name: '首页', 15 | en_name: 'main', 16 | groups: [ 17 | Competition, 18 | DataProcess, 19 | AIPlatform, 20 | CoordConvert, 21 | Visulization, 22 | Awesome, 23 | OnlineMap, 24 | DataSource, 25 | RSPlatform, 26 | Weather 27 | ].sort((a, b) => a.order - b.order) 28 | } 29 | -------------------------------------------------------------------------------- /.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | env: { 3 | browser: true, 4 | es2021: true, 5 | node: true 6 | }, 7 | extends: [ 8 | 'eslint:recommended', 9 | 'plugin:@typescript-eslint/recommended', 10 | 'plugin:react/recommended', 11 | 'plugin:react/jsx-runtime' 12 | ], 13 | overrides: [ 14 | { 15 | env: { 16 | node: true 17 | }, 18 | files: ['.eslintrc.{js,cjs}'], 19 | parserOptions: { 20 | sourceType: 'script' 21 | } 22 | }, 23 | { 24 | files: ['**/*.tsx'], 25 | rules: { 26 | 'react/prop-types': 'off' 27 | } 28 | } 29 | ], 30 | parser: '@typescript-eslint/parser', 31 | parserOptions: { 32 | ecmaVersion: 'latest', 33 | sourceType: 'module' 34 | }, 35 | plugins: ['@typescript-eslint', 'react'], 36 | rules: { 37 | indent: ['error', 2], 38 | 'linebreak-style': ['error', 'unix'], 39 | semi: ['error', 'never'], 40 | 'react/react-in-jsx-scope': 'off' 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /src/data/sites/data/groups/digital_library.ts: -------------------------------------------------------------------------------- 1 | import { IGroup } from '../../../types' 2 | 3 | export const DigitalLibrary: IGroup = { 4 | icon: 'icon-shujuyuanguanli', 5 | name: '数字馆藏', 6 | en_name: 'Digital Library', 7 | order: 3, 8 | children: [ 9 | { 10 | icon: 'https://www.alexandria.ucsb.edu/assets/favicon-b4185c7dd08c0b4f2142c58bbcca322b3a01f50adc3413438b98be2b664bb4b6.ico', 11 | name: 'Alexandria Global Digital LIbrary at UC Santa Barbara', 12 | en_name: 'Alexandria Global Digital LIbrary at UC Santa Barbara', 13 | description: 'UCSB图书馆,包含地理空间信息分享', 14 | en_description: 15 | 'Providing access to unique digital research materials from UC Santa Barbara Library', 16 | site_url: 'http://www.alexandria.ucsb.edu/ ', 17 | order: 2, 18 | tags: ['GIS', 'Web', 'Data'] 19 | }, 20 | { 21 | icon: 'https://digimap.edina.ac.uk/favicon.ico', 22 | name: 'Digimap', 23 | en_name: 'Digimap', 24 | description: '英国地理信息平台,爱丁堡大学孵化', 25 | en_description: 'Geographic Information Plantform, provided by EDINA', 26 | site_url: 'https://digimap.edina.ac.uk/', 27 | order: 2, 28 | tags: ['GIS', 'Web', 'Data'] 29 | } 30 | ] 31 | } 32 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # DipperMap GIS 工具站点导航 2 | 3 | 在线访问:https://nav.dippermap.com/ 4 | 5 | Inspired by [larkmap](https://larkmap.com/) 6 | 7 | 站点分组图标使用 Iconfont [图标预览](https://at.alicdn.com/t/project/4354752/0222451a-1d85-4919-a555-fcf0ed1d7363.html?spm=a313x.manage_type_myprojects.i1.7.79523a81KuPc2X) 8 | 9 | ## 提交站点 10 | 11 | #### 方式一 issue 方式 12 | 13 | 通过 ISSUE 提交 网站信息,网站开发者回更新到项目中 14 | 15 | [点击提交站点信息](https://github.com/DipperMap/dippermap/issues/new?assignees=&labels=&projects=&template=site_report.yml) 16 | 17 | #### 方式二 提交 PR 18 | 19 | 直接修改站点配置文件,通过 PR 的方式,合并代码,代码合并后站点生效 20 | 21 | ## 本地开发 22 | 23 | ### clone 代码 24 | 25 | ```bash 26 | git clone https://github.com/DipperMap/dippermap.git 27 | ``` 28 | 29 | ### `npm start` 30 | 31 | Runs the app in the development mode.\ 32 | Open [http://localhost:3000](http://localhost:3000) to view it in the browser. 33 | 34 | ### `npm commit` 35 | 36 | Submit your code this way. 37 | 38 | ## 👬 Contributors 39 | 40 | 41 | 42 | 43 | 44 | 45 | ● https://github.com/Sh1-5 46 | 47 | ● https://github.com/wsqstar 48 | 49 | ● https://github.com/asorn 50 | 51 | ● https://github.com/websybin 52 | 53 | ● https://github.com/SevenNorth 54 | 55 | ● https://github.com/baixixi2020 56 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/oscp.yml: -------------------------------------------------------------------------------- 1 | name: 'AntV OSCP 计划' 2 | description: AntV 开源共建计划(AntV Open Source Contribution Plan,简称 AntV OSCP) 3 | body: 4 | - type: checkboxes 5 | id: AntV_OSCP_program 6 | attributes: 7 | label: AntV Open Source Contribution Plan(可选) 8 | description: | 9 | AntV 开源共建计划(AntV Open Source Contribution Plan,简称 AntV OSCP) 期望可以基于 AntV 的开源 Roadmap 开放具体开发任务到社区,以社区共建任务的形式推动“AntV” 的开源发展,也期望有更多社区伙伴各各种形式参与到 AntV 的开源共建中,共同参与数据可视化开源生态的持续建设。 10 | 若有感兴趣想要认领的任务,可直接回复认领,如果你是首次认领可先完成[新手任务](https://www.yuque.com/antv/cyggvg/cwc9kacfvd9aivsp) 11 | 12 | options: 13 | - label: 我同意将这个 Issue 参与 OSCP 计划 14 | validations: 15 | required: false 16 | - type: dropdown 17 | id: issue_oscp_difficulty 18 | attributes: 19 | label: Issue 类型 20 | options: 21 | - 初级入门任务 22 | - 中级任务 23 | - 高级任务 24 | - 专家任务 25 | validations: 26 | required: false 27 | - type: textarea 28 | id: oscp_task_description 29 | attributes: 30 | label: 任务介绍 31 | description: | 32 | 简单描述任务背景信息,为了解决哪些问题 33 | validations: 34 | required: false 35 | - type: textarea 36 | id: oscp_task_info_description_2 37 | attributes: 38 | label: 参考说明 39 | description: | 40 | 提供一些可参考的demo,相关教程辅助用户解决问题 41 | validations: 42 | required: false 43 | -------------------------------------------------------------------------------- /src/components/mobile-sider/index.css: -------------------------------------------------------------------------------- 1 | .mobile-sider { 2 | color: #fff; 3 | overflow: hidden; 4 | height: 64px; 5 | position: fixed !important; 6 | left: 0px; 7 | top: 0; 8 | bottom: 0; 9 | z-index: 2; 10 | width: 100% !important; 11 | max-width: 100% !important; 12 | } 13 | 14 | .mobile-header { 15 | display: flex; 16 | align-items: center; 17 | justify-content: space-between; 18 | padding: 0px 20px 0 0; 19 | background: rgba(255, 255, 255, 0.02); 20 | height: 64px; 21 | } 22 | 23 | .mobile-logo { 24 | padding: 14px 20px; 25 | display: flex; 26 | align-items: center; 27 | } 28 | 29 | .mobile-sider-select { 30 | display: flex; 31 | align-items: center; 32 | cursor: pointer; 33 | margin-left: 20px; 34 | width: 80px; 35 | justify-content: space-around; 36 | } 37 | 38 | .mobile-icon { 39 | border-radius: 4px; 40 | } 41 | 42 | .mobile-content { 43 | padding: 14px 18px; 44 | overflow-y: auto; 45 | height: 166px; 46 | } 47 | 48 | .mobile-tag-item { 49 | background-color: #ffffff10; 50 | border: solid 1px #ffffff10; 51 | color: #fff; 52 | padding: 6px 12px; 53 | border-radius: 15px; 54 | font-weight: 400; 55 | cursor: pointer; 56 | margin-bottom: 10px; 57 | } 58 | 59 | .mobile-selected-tag { 60 | background-color: #fff; 61 | color: #000; 62 | } 63 | 64 | .mobile-tag-item:hover { 65 | background-color: #fff; 66 | } 67 | -------------------------------------------------------------------------------- /src/data/sites/data/groups/pub_data.ts: -------------------------------------------------------------------------------- 1 | import { IGroup } from '../../../types' 2 | 3 | export const PubData: IGroup = { 4 | icon: 'icon-ditupeise', 5 | name: '出版数据', 6 | en_name: 'Publised Data', 7 | order: 2, 8 | children: [ 9 | { 10 | icon: 'https://www.geodoi.ac.cn/WebCn/Skin/Images/banner.png', 11 | tags: ['Earth Science', 'Data Publishing', 'Global Change'], 12 | name: '全球变化科学研究数据出版系统', 13 | en_name: 'Global Change Science Research Data Publishing System', 14 | description: 15 | '数据种类非常丰富,涉及领域较多,根据需要自己查找。账号注册,直接下载即可。', 16 | en_description: 17 | 'A rich variety of data covering multiple fields. Users can search for data based on their needs. Direct download available upon account registration.', 18 | order: 2, 19 | site_url: 'http://www.geodoi.ac.cn/WebCn/Default.aspx' 20 | }, 21 | { 22 | icon: 'https://vsso.nssdc.ac.cn/favicon.ico', 23 | tags: ['Space Science', 'Virtual Observatory', 'Observational Data'], 24 | name: '空间科学虚拟观测台', 25 | en_name: 'Virtual Space Science Observatory', 26 | description: 27 | '空间科学虚拟观测台数据资源覆盖空间物理、空间天文、行星科学、空间地球科学四大学科,已建成24个专业数据库。', 28 | en_description: 29 | 'The data resources of the Space Science Virtual Observatory cover the four major disciplines of space physics, space astronomy, planetary science, and space earth science. Twenty-four professional databases have been established.', 30 | order: 2, 31 | site_url: 'https://vsso.nssdc.ac.cn/nssdc_zh/html/vssoindex.html' 32 | } 33 | ] 34 | } 35 | -------------------------------------------------------------------------------- /src/components/app-search/index.css: -------------------------------------------------------------------------------- 1 | .searchWrapper { 2 | width: 97%; 3 | margin: 30px auto 0; 4 | } 5 | 6 | .searchBox { 7 | line-height: normal; 8 | } 9 | 10 | .searchBox .ant-btn { 11 | border: none; 12 | border-radius: 8px 16px 0px 0px; 13 | background-color: #dde3ec; 14 | } 15 | 16 | .searchBox .ant-btn:hover, 17 | .searchBox .ant-btn.activeSearch { 18 | color: #fff !important; 19 | background-color: #38404d !important; 20 | } 21 | 22 | .searchBox .ant-space { 23 | width: 100%; 24 | overflow-x: auto; 25 | } 26 | 27 | .searchBox .ant-space-gap-col-small { 28 | column-gap: 4px; 29 | } 30 | 31 | .searchBox .ant-input.ant-input-lg { 32 | border-top-left-radius: 0; 33 | padding: 12px 15px; 34 | font-size: 14px; 35 | } 36 | 37 | .searchBox .ant-input-prefix .ant-btn-icon { 38 | display: flex; 39 | align-items: center; 40 | justify-content: center; 41 | } 42 | 43 | .searchBox .ant-input-prefix .ant-btn-icon img { 44 | width: 65%; 45 | border-radius: 4px; 46 | } 47 | 48 | .selectSearchDrawer .ant-btn.activeSearch { 49 | color: #fff !important; 50 | background-color: #38404d !important; 51 | border: none; 52 | box-shadow: none; 53 | } 54 | 55 | .selectSearchDrawer { 56 | border-top-left-radius: 16px; 57 | border-top-right-radius: 16px; 58 | } 59 | 60 | .selectSearchDrawer .ant-drawer-title { 61 | color: #1d2531; 62 | } 63 | 64 | .selectSearchDrawer .ant-btn-default { 65 | border-color: #dde3ec; 66 | color: #38404d; 67 | } 68 | 69 | .selectSearchDrawer .ant-btn { 70 | height: unset; 71 | padding: 8px 20px; 72 | } 73 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/site_report.yml: -------------------------------------------------------------------------------- 1 | name: 'GIS工具 提交' 2 | description: 提交一个常用的 GIS 站点,如数据处理,数据可视化,数据分析等工具。 3 | body: 4 | - type: input 5 | id: site_name 6 | attributes: 7 | label: 站点名称 8 | description: | 9 | 输入站点名称 10 | placeholder: | 11 | https://l7editor.antv.antgroup.com/ 12 | validations: 13 | required: true 14 | - type: input 15 | id: site_url 16 | attributes: 17 | label: 站点 18 | description: | 19 | 输入站点 URL 20 | placeholder: | 21 | https://l7editor.antv.antgroup.com/ 22 | validations: 23 | required: true 24 | - type: textarea 25 | id: description 26 | attributes: 27 | label: 站点简介 28 | description: 清晰的描述站点解决什么问题 29 | placeholder: | 30 | 例如: L7 Editor 是一个基于 L7 的可视化地理数据编辑器。 31 | validations: 32 | required: true 33 | - type: textarea 34 | id: description_en 35 | attributes: 36 | label: 站点英文介绍 37 | description: 站点英文的描述。 38 | placeholder: | 39 | 例如: L7 Editor is a visual geographic data editor based on L7. 40 | validations: 41 | required: false 42 | - type: input 43 | id: github 44 | attributes: 45 | label: 站点 Github 地址 46 | description: | 47 | 站点 Github 地址 48 | placeholder: | 49 | https://github.com/antvis/L7Editor 50 | validations: 51 | required: false 52 | - type: textarea 53 | id: logo 54 | attributes: 55 | label: 图标 56 | description: 站点 logo 或 icon 图标, URL 地址或者复制图片 57 | placeholder: | 58 | 可以将你的图片拖拽到此处↓ 59 | -------------------------------------------------------------------------------- /src/data/sites/tech/index.ts: -------------------------------------------------------------------------------- 1 | import { ISiteConfig } from '../../types' 2 | import { Tiles3D } from './groups/3d_tiles' 3 | import { MapEngine } from './groups/map_engine' 4 | import { spatialDatabase } from './groups/spatial_database' 5 | import { GISSoftWare } from './groups/gis_software' 6 | import { RSSoftWare } from './groups/rs_software' 7 | import { Application3D } from './groups/3d_applications' 8 | import { WebMapServer } from './groups/web_map_server' 9 | import { C } from './groups/geospatial_library/c' 10 | import { CPlus } from './groups/geospatial_library/c++' 11 | import { CSharp } from './groups/geospatial_library/c_sharp' 12 | import { Go } from './groups/geospatial_library/go' 13 | import { Java } from './groups/geospatial_library/java' 14 | import { JavaScript } from './groups/geospatial_library/javascript' 15 | import { Python } from './groups/geospatial_library/python' 16 | import { PHP } from './groups/geospatial_library/php' 17 | import { Julia } from './groups/geospatial_library/julia' 18 | import { FrontEndFramework } from './groups/front_end_framework' 19 | import { OpenStandards } from './groups/open_standards' 20 | import { Ruby } from './groups/geospatial_library/ruby' 21 | import { Rust } from './groups/geospatial_library/rust' 22 | import { Awesome } from './groups/awesome' 23 | 24 | export const Tech: ISiteConfig = { 25 | name: '开源技术', 26 | en_name: 'tech', 27 | groups: [ 28 | Awesome, 29 | GISSoftWare, 30 | MapEngine, 31 | spatialDatabase, 32 | RSSoftWare, 33 | Application3D, 34 | WebMapServer, 35 | FrontEndFramework, 36 | Tiles3D, 37 | C, 38 | CPlus, 39 | CSharp, 40 | Go, 41 | Java, 42 | JavaScript, 43 | Python, 44 | PHP, 45 | Julia, 46 | OpenStandards, 47 | Rust, 48 | Ruby 49 | ].sort((a, b) => a.order - b.order) 50 | } 51 | -------------------------------------------------------------------------------- /src/App.css: -------------------------------------------------------------------------------- 1 | .App { 2 | overflow: auto; 3 | scroll-behavior: smooth; 4 | min-height: 100vh; 5 | } 6 | 7 | .App-logo { 8 | height: 40vmin; 9 | pointer-events: none; 10 | } 11 | 12 | @media (prefers-reduced-motion: no-preference) { 13 | .App-logo { 14 | animation: App-logo-spin infinite 20s linear; 15 | } 16 | } 17 | 18 | .App-link { 19 | color: #61dafb; 20 | } 21 | .App-sider { 22 | color: #fff; 23 | overflow: hidden; 24 | height: 100vh; 25 | position: fixed !important; 26 | left: 0px; 27 | top: 0; 28 | bottom: 0; 29 | z-index: 2; 30 | background-color: #1d2531; 31 | } 32 | 33 | .siderWidth { 34 | width: 280px !important; 35 | max-width: 280px !important; 36 | min-width: 235px !important; 37 | } 38 | .retractSiderWidth { 39 | width: 80px !important; 40 | max-width: 280px !important; 41 | min-width: 80px !important; 42 | } 43 | .ant-layout .ant-layout-sider { 44 | transition: all 0.5s; 45 | } 46 | .contentLayout { 47 | transition: all 0.5s; 48 | } 49 | .App-content { 50 | min-height: 120px; 51 | line-height: 120px; 52 | /* filter: grayscale(0.8); */ 53 | padding: 0; 54 | background-color: #f7f9fc; 55 | background-attachment: fixed; 56 | background-image: url(./assets/intro.svg); 57 | background-position: top right; 58 | background-repeat: no-repeat; 59 | background-size: 100% 100%; 60 | transition: margin-left 0.4s; 61 | } 62 | .App-footer { 63 | text-align: center; 64 | color: #969eaa; 65 | background-color: #ffffff; 66 | } 67 | 68 | .App-header { 69 | text-align: center; 70 | height: 64px; 71 | padding-inline: 32px; 72 | line-height: 64px; 73 | background-color: #ffffff; 74 | position: sticky; 75 | top: 0; 76 | z-index: 1; 77 | width: 100%; 78 | display: flex; 79 | align-items: center; 80 | } 81 | 82 | /* @keyframes App-logo-spin { 83 | from { 84 | transform: rotate(0deg); 85 | } 86 | to { 87 | transform: rotate(360deg); 88 | } 89 | } */ 90 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.yml: -------------------------------------------------------------------------------- 1 | name: '🐞 新 Issue' 2 | description: 创建一个新的 issue,如果你的 issue 不符合规范,它将会被自动关闭。 3 | body: 4 | - type: markdown 5 | attributes: 6 | value: | 7 | 在提交新 issue 之前,先通过以下链接查看有没有类似的 bug 或者建议: 8 | - [L7 Issues](https://github.com/antvis/L7/issues) 9 | - [L7 Discussions](https://github.com/antvis/L7/discussions) 10 | - type: textarea 11 | id: description 12 | attributes: 13 | label: 问题描述 14 | description: 简洁清晰地描述你遇到的问题。 15 | validations: 16 | required: true 17 | - type: input 18 | id: link 19 | attributes: 20 | label: 重现链接 21 | description: | 22 | 可以使用 CodeSandbox(https://codesandbox.io/s/l7-demo-w4v6pr?file=/index.js) 或者 StackBlitz(https://stackblitz.com/) 重现你的问题。 23 | placeholder: | 24 | 示例: CodeSandBox 或者 StackBlitz URL 25 | validations: 26 | required: false 27 | - type: textarea 28 | id: steps 29 | attributes: 30 | label: 重现步骤 31 | description: 简洁清晰的重现步骤能够帮助我们更迅速地定位问题所在。 32 | placeholder: | 33 | 1.进入页面... 34 | 2.点击.... 35 | 3.查看错误.... 36 | validations: 37 | required: false 38 | - type: textarea 39 | id: expected 40 | attributes: 41 | label: 预期行为 42 | description: 描述你期望的结果以及实际的结果。 43 | placeholder: | 44 | 我期望看到...,但我看到了... 45 | validations: 46 | required: false 47 | - type: textarea 48 | id: platform 49 | attributes: 50 | label: 平台 51 | value: | 52 | - 操作系统: [macOS, Windows, Linux, React Native ...] 53 | - 网页浏览器: [Google Chrome, Safari, Firefox] 54 | validations: 55 | required: false 56 | - type: textarea 57 | id: screenshots_or_videos 58 | attributes: 59 | label: 屏幕截图或视频(可选) 60 | description: 可以添加屏幕截图或视频帮助你解释问题。 61 | placeholder: | 62 | 可以将你的图片或者视频拖拽到此处↓ 63 | - type: textarea 64 | id: additional 65 | attributes: 66 | label: 补充说明(可选) 67 | description: 比如:遇到这个 bug 的业务场景、上下文。 68 | -------------------------------------------------------------------------------- /src/components/app-search/WideSearch.tsx: -------------------------------------------------------------------------------- 1 | import { useState } from 'react' 2 | import { ISearchItem } from '../../data/searchConfig' 3 | import { Input, Button, Space, ConfigProvider } from 'antd' 4 | 5 | export const WideSearch = (props: { searchConfig: ISearchItem[] }) => { 6 | const { searchConfig } = props 7 | const [curSearchType, setCurSearchType] = useState( 8 | searchConfig[0] 9 | ) 10 | const [searchText, setSearchText] = useState() 11 | 12 | return ( 13 | <> 14 | 23 | 24 | {searchConfig.map((item) => { 25 | return ( 26 | 36 | ) 37 | })} 38 | 39 | 40 | 51 | ${curSearchType.name}搜索`} 54 | value={searchText} 55 | onChange={(e) => setSearchText(e.target.value)} 56 | onPressEnter={() => { 57 | window.open( 58 | `${curSearchType.site}?${curSearchType.paramKey}=${searchText}` 59 | ) 60 | }} 61 | /> 62 | 63 | 64 | ) 65 | } 66 | -------------------------------------------------------------------------------- /src/data/sites/main/groups/weather.ts: -------------------------------------------------------------------------------- 1 | import { IGroup } from '../../../types' 2 | export const Weather: IGroup = { 3 | icon: 'icon-tianqi', 4 | name: '天气', 5 | en_name: 'Weather', 6 | order: 8, 7 | children: [ 8 | { 9 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*YoLURLhIs0wAAAAAAAAAAAAADrZ5AQ/original', 10 | name: 'Windy', 11 | en_name: 'Windy', 12 | description: '全球天气预报', 13 | en_description: 'Global weather forecast', 14 | site_url: 'https://www.windy.com/', 15 | order: 2, 16 | tags: ['GIS', 'Web', 'Data'] 17 | }, 18 | { 19 | icon: 'https://caiyunapp.com/imgs/logo.png', 20 | name: '彩云天气', 21 | en_name: 'Caiyunapp', 22 | description: '天气预报平台,提供api', 23 | en_description: 'Weather forecast platform, providing API', 24 | site_url: 'https://caiyunapp.com/map/', 25 | order: 2, 26 | tags: ['GIS', 'Web', 'Data'] 27 | }, 28 | { 29 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*QuGzQpWdTiEAAAAAAAAAAAAADrZ5AQ/original', 30 | name: 'Earth Nullschool', 31 | en_name: 'Earth Nullschool', 32 | description: 33 | 'Visualize global weather conditions, ocean currents, and greenhouse gas concentrations in a stunning interactive map.', 34 | en_description: 35 | 'Visualize global weather conditions, ocean currents, and greenhouse gas concentrations in a stunning interactive map.', 36 | site_url: 'http://earth.nullschool.net/', 37 | order: 10, 38 | tags: ['Global Weather', 'Ocean Currents', 'Interactive Map'] 39 | }, 40 | 41 | { 42 | icon: '', 43 | name: '空气质量数据', 44 | en_name: 'Quotsoft Air Quality Monitor', 45 | description: 'Quotsoft 空气质量监测工具,提供实时空气质量数据和分析。', 46 | en_description: 47 | 'Quotsoft Air Quality Monitor provides real-time air quality data and analysis.', 48 | site_url: 'https://quotsoft.net/air/', 49 | order: 19, 50 | tags: ['Air Quality', 'Environmental Monitoring', 'Data Analysis'] 51 | } 52 | ] 53 | } 54 | -------------------------------------------------------------------------------- /src/data/sites/main/groups/onlinemap.ts: -------------------------------------------------------------------------------- 1 | import { IGroup } from '../../../types' 2 | export const OnlineMap: IGroup = { 3 | icon: 'icon-a-zaixianditu2', 4 | name: '在线地图', 5 | order: 8, 6 | en_name: 'onlinemap', 7 | children: [ 8 | { 9 | icon: 'https://www.tianditu.gov.cn/static/favicon.ico', 10 | name: '天地图', 11 | en_name: 'Tianditu', 12 | description: '天地图', 13 | en_description: 'Tianditu', 14 | site_url: 'https://www.tianditu.gov.cn/', 15 | order: 2, 16 | tags: ['GIS', 'Web', 'Data'] 17 | }, 18 | { 19 | icon: 'https://www.baidu.com/favicon.ico', 20 | name: '百度地图', 21 | en_name: 'Baidu Map', 22 | description: '百度地图', 23 | en_description: 'Baidu Map', 24 | site_url: 'https://map.baidu.com/', 25 | order: 2, 26 | tags: ['GIS', 'Web', 'Data'] 27 | }, 28 | { 29 | icon: 'https://www.amap.com/favicon.ico', 30 | name: '高德地图', 31 | en_name: 'Amap', 32 | description: '高德地图', 33 | en_description: 'Amap', 34 | site_url: 'https://www.amap.com/', 35 | order: 2, 36 | tags: ['GIS', 'Web', 'Data'] 37 | }, 38 | { 39 | icon: 'https://map.qq.com/favicon.ico', 40 | name: '腾讯地图', 41 | en_name: 'Tencent Map', 42 | description: '腾讯地图', 43 | en_description: 'Tencent Map', 44 | site_url: 'https://map.qq.com/', 45 | order: 2, 46 | tags: ['GIS', 'Web', 'Data'] 47 | }, 48 | { 49 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*kqR8Q7bJYiwAAAAAAAAAAAAADrZ5AQ/original', 50 | name: 'Here Map', 51 | en_name: 'Here Map', 52 | description: 'Here Map', 53 | en_description: 'Here Map', 54 | site_url: 'https://maps.here.com/', 55 | order: 2, 56 | tags: ['GIS', 'Web', 'Data'] 57 | }, 58 | { 59 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*TrBASa3dWpkAAAAAAAAAAAAADrZ5AQ/original', 60 | name: 'Google Map', 61 | en_name: 'Google Map', 62 | description: 'Google Map', 63 | en_description: 'Google Map', 64 | site_url: 'https://www.google.com/maps', 65 | order: 2, 66 | tags: ['GIS', 'Web', 'Data'] 67 | } 68 | ] 69 | } 70 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "dippermap-nav", 3 | "version": "0.1.0", 4 | "private": true, 5 | "dependencies": { 6 | "@ant-design/icons": "^5.2.6", 7 | "@testing-library/jest-dom": "^5.17.0", 8 | "@testing-library/react": "^13.4.0", 9 | "@testing-library/user-event": "^13.5.0", 10 | "@types/jest": "^27.5.2", 11 | "@types/node": "^16.18.65", 12 | "@types/react": "^18.2.39", 13 | "@types/react-dom": "^18.2.17", 14 | "@typescript-eslint/parser": "^6.13.1", 15 | "ahooks": "^3.7.8", 16 | "classnames": "^2.3.2", 17 | "react": "^18.2.0", 18 | "react-dom": "^18.2.0", 19 | "react-scripts": "5.0.1", 20 | "typescript": "^4.9.5", 21 | "web-vitals": "^2.1.4" 22 | }, 23 | "scripts": { 24 | "start": "react-scripts start", 25 | "build": "react-scripts build", 26 | "test": "react-scripts test", 27 | "eject": "react-scripts eject", 28 | "prettier": "prettier --write .", 29 | "lint": "lint-staged", 30 | "commit": "cz" 31 | }, 32 | "lint-staged": { 33 | "src/*.{js,ts,jsx,tsx,vue}": [ 34 | "node_modules/.bin/prettier --write .", 35 | "node_modules/.bin/eslint --fix .", 36 | "git add ." 37 | ], 38 | "src/*.{css,scss,less,json,html,md}": [ 39 | "node_modules/.bin/prettier --write .", 40 | "git add ." 41 | ] 42 | }, 43 | "eslintConfig": { 44 | "extends": [ 45 | "react-app", 46 | "react-app/jest" 47 | ] 48 | }, 49 | "browserslist": { 50 | "production": [ 51 | ">0.2%", 52 | "not dead", 53 | "not op_mini all" 54 | ], 55 | "development": [ 56 | "last 1 chrome version", 57 | "last 1 firefox version", 58 | "last 1 safari version" 59 | ] 60 | }, 61 | "devDependencies": { 62 | "@commitlint/cli": "^18.4.3", 63 | "@commitlint/config-conventional": "^18.4.3", 64 | "@typescript-eslint/eslint-plugin": "^6.13.2", 65 | "antd": "^5.11.5", 66 | "commitizen": "^4.3.0", 67 | "cz-conventional-changelog": "^3.3.0", 68 | "eslint": "^8.54.0", 69 | "husky": "^8.0.3", 70 | "lint-staged": "^15.1.0", 71 | "prettier": "^3.1.0" 72 | }, 73 | "config": { 74 | "commitizen": { 75 | "path": "./node_modules/cz-conventional-changelog" 76 | } 77 | } 78 | } 79 | -------------------------------------------------------------------------------- /src/data/sites/main/groups/coord_process.ts: -------------------------------------------------------------------------------- 1 | // 坐标转换工具 2 | import { IGroup } from '../../../types' 3 | export const CoordConvert: IGroup = { 4 | icon: 'icon-tool_zuobiaozhuanhuan', 5 | name: '坐标处理与文件转换', 6 | order: 4, 7 | en_name: 'Coord', 8 | children: [ 9 | { 10 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*D4jaRr4AnI0AAAAAAAAAAAAADrZ5AQ/original', 11 | name: 'EPSG.io', 12 | en_name: 'epsg.io', 13 | description: '全球坐标系转换工具', 14 | en_description: 'Global Coordinate System Conversion Tool', 15 | site_url: 'https://epsg.io/', 16 | order: 2, 17 | tags: ['GIS', 'Web', 'Data'] 18 | }, 19 | { 20 | site_url: 'https://www.lddgo.net/base/class?classID=8', 21 | name: '坐标转换', 22 | icon: 'https://www.lddgo.net/img/icon.png', 23 | description: '坐标/经纬度查询', 24 | en_name: 'Coord', 25 | en_description: 'Coord', 26 | order: 2, 27 | tags: ['GIS', 'Web', 'Data'] 28 | }, 29 | { 30 | site_url: 'http://www.wmksj.com/tool/coordinate.html', 31 | name: '坐标系转换', 32 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*KVUpTJBVXl4AAAAAAAAAAAAADrZ5AQ/original', 33 | description: 'BD09、GCJ02、WGS84坐标系转换', 34 | en_name: '坐标系转换', 35 | en_description: 'BD09、GCJ02、WGS84坐标系转换 ', 36 | order: 2, 37 | tags: ['GIS', 'Web', 'Data'] 38 | }, 39 | { 40 | icon: '', 41 | name: 'Gdal3.js', 42 | en_name: 'gdal3.js', 43 | description: '栅格矢量格式转换', 44 | en_description: 45 | ' Convert raster and vector geospatial data to various formats and coordinate systems entirely in the browser', 46 | site_url: 'https://gdal3.js.org/', 47 | order: 2, 48 | tags: ['GIS', 'Web', 'Data'] 49 | }, 50 | { 51 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*4wYwSKCJ5AIAAAAAAAAAAAAADrZ5AQ/original', 52 | name: 'MyGeodata Cloud Converter', 53 | en_name: 'MyGeodata Cloud Converter', 54 | description: '在线地理数据格式转换工具', 55 | en_description: 'Online geospatial data format conversion tool', 56 | site_url: 'https://mygeodata.cloud/converter/', 57 | order: 5, 58 | tags: ['Geospatial Data', 'Converter', 'GIS'] 59 | } 60 | ] 61 | } 62 | -------------------------------------------------------------------------------- /public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 12 | 13 | 17 | 18 | 27 | DipperMap 星辰地图|GIS 站点导航 28 | 29 | 30 | 31 |
32 | 42 | 51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /src/data/sites/main/groups/ai_platform.ts: -------------------------------------------------------------------------------- 1 | import { IGroup } from '../../../types' 2 | 3 | export const AIPlatform: IGroup = { 4 | icon: 'icon-rengongzhinengdanao', 5 | name: 'AI 平台', 6 | en_name: 'AI platform', 7 | order: 12, 8 | children: [ 9 | { 10 | icon: 'https://aistudio-fe-online.cdn.bcebos.com/aistudio/dist/1702030665650/favicon-32.ico', 11 | name: '飞桨AI Studio', 12 | en_name: 'PaddlePaddle AI Studio', 13 | description: 14 | '开源的深度学习平台,由百度公司开发并推出的。它旨在提供一个易于使用、高效和灵活的平台,供开发人员和研究人员使用深度学习进行各种任务,包括图像分类、目标检测、语言处理、推荐系统等。', 15 | en_description: 16 | "Baidu's AI Studio provides a platform for AI development, offering tools and resources for machine learning, deep learning, and artificial intelligence projects.", 17 | 18 | site_url: 'https://aistudio.baidu.com/learnmap', 19 | order: 2, 20 | tags: [ 21 | 'AI Development', 22 | 'Machine Learning', 23 | 'Deep Learning', 24 | 'Artificial Intelligence' 25 | ] 26 | }, 27 | { 28 | icon: 'https://cdn.kesci.com/favicon.ico', 29 | name: '和鲸 Heywhale', 30 | en_name: 'Heywhale', 31 | description: 32 | '和鲸社区是数据科学开源社区,帮助数据人才在交流中享受学习,在实践中快速成长。众多数据科学从业者及爱好者在这里分享开源代码、复现实战案例、参与数据竞赛、记录成长历程。', 33 | en_description: 34 | 'Heywhale is a platform that supports data science and machine learning projects. It provides resources, collaboration tools, and a community for data enthusiasts and professionals.', 35 | site_url: 'https://www.heywhale.com/home', 36 | order: 30, 37 | tags: ['Data Science', 'Machine Learning', 'Collaboration', 'Community'] 38 | }, 39 | { 40 | icon: 'https://samgeo.gishub.org/assets/images/favicon.png', 41 | name: 'segment-geospatial', 42 | en_name: 'SAM Geo', 43 | description: 44 | 'SAM Geo is a platform for spatial analysis and mapping, providing tools and resources for geographic information systems (GIS) and remote sensing.', 45 | en_description: 46 | 'SAM Geo is a platform for spatial analysis and mapping, providing tools and resources for geographic information systems (GIS) and remote sensing.', 47 | site_url: 'https://samgeo.gishub.org/', 48 | order: 31, 49 | tags: ['Spatial Analysis', 'Mapping', 'GIS', 'Remote Sensing'] 50 | } 51 | ] 52 | } 53 | -------------------------------------------------------------------------------- /src/data/searchConfig.ts: -------------------------------------------------------------------------------- 1 | export interface ISearchItem { 2 | id: string // 搜索项ID 3 | name: string // 搜索引擎名称 4 | site: string // 搜索跳转地址 5 | paramKey: string // 搜索用的字段 6 | icon?: string // 搜索引擎icon 7 | } 8 | 9 | export const searchConfig: ISearchItem[] = [ 10 | { 11 | id: 'baidu', 12 | name: '百度', 13 | site: 'https://www.baidu.com/s', 14 | paramKey: 'wd', 15 | icon: 'http://sevennorth.lovinghlx.cn/imgbed/www.baidu.com.ico' 16 | }, 17 | { 18 | id: 'baidu-dev', 19 | name: '百度开发者', 20 | site: 'https://kaifa.baidu.com/searchPage', 21 | paramKey: 'wd', 22 | icon: 'http://sevennorth.lovinghlx.cn/imgbed/www.baidu.com.ico' 23 | }, 24 | { 25 | id: 'google', 26 | name: 'Google', 27 | site: 'https://www.google.com/search', 28 | paramKey: 'q' 29 | }, 30 | { 31 | id: 'github', 32 | name: 'Github', 33 | site: 'https://github.com/search', 34 | paramKey: 'q', 35 | icon: 'http://sevennorth.lovinghlx.cn/imgbed/github.com.ico' 36 | }, 37 | { 38 | id: 'ecosia', 39 | name: 'Ecosia', 40 | site: 'https://www.ecosia.org/search', 41 | paramKey: 'q', 42 | icon: 'http://sevennorth.lovinghlx.cn/imgbed/www.ecosia.org.ico' 43 | }, 44 | { 45 | id: 'yandex', 46 | name: 'Yandex', 47 | site: 'https://yandex.com/search/', 48 | paramKey: 'text', 49 | icon: 'http://sevennorth.lovinghlx.cn/imgbed/yandex.com.ico' 50 | }, 51 | { 52 | id: '360-so', 53 | name: '360', 54 | site: 'https://www.so.com/s', 55 | paramKey: 'q' 56 | }, 57 | { 58 | id: 'bing', 59 | name: 'Bing', 60 | site: 'https://www.bing.com/search', 61 | paramKey: 'q', 62 | icon: 'http://sevennorth.lovinghlx.cn/imgbed/www.bing.com.ico' 63 | }, 64 | { 65 | id: 'zhihu', 66 | name: '知乎', 67 | site: 'https://www.zhihu.com/search', 68 | paramKey: 'q' 69 | }, 70 | { 71 | id: 'bilibili', 72 | name: 'Bilibili', 73 | site: 'https://search.bilibili.com/all', 74 | paramKey: 'keyword', 75 | icon: 'http://sevennorth.lovinghlx.cn/imgbed/search.bilibili.com.ico' 76 | }, 77 | { 78 | id: 'douban', 79 | name: '豆瓣', 80 | site: 'https://www.douban.com/search', 81 | paramKey: 'q' 82 | }, 83 | { 84 | id: 'figma-plugins', 85 | name: 'Figma 插件', 86 | site: 'https://fig-stats.com/plugins', 87 | paramKey: 'search' 88 | } 89 | ] 90 | -------------------------------------------------------------------------------- /src/components/app-content/index.css: -------------------------------------------------------------------------------- 1 | .item-content { 2 | width: 97%; 3 | margin-top: 20px; 4 | } 5 | 6 | .item-content:last-child { 7 | margin-bottom: 30px; 8 | } 9 | 10 | .card { 11 | display: flex; 12 | } 13 | 14 | .card-col { 15 | width: 100%; 16 | } 17 | .card-item { 18 | border-radius: 8px 24px 8px 8px; 19 | cursor: pointer; 20 | background-color: #f7f9fc; 21 | padding: 16px 12px 16px 16px; 22 | margin-bottom: 16px; 23 | display: block; 24 | position: relative; 25 | } 26 | 27 | .card-item:hover { 28 | background-color: #ebeff5; 29 | } 30 | 31 | .card-item:hover .collect_icon { 32 | display: block !important; 33 | } 34 | 35 | .link-content { 36 | display: flex; 37 | align-items: flex-start; 38 | flex-direction: column; 39 | margin-left: 55px; 40 | cursor: pointer; 41 | } 42 | 43 | .link-img { 44 | display: block; 45 | padding: 8px; 46 | background: #fff; 47 | /* border: 1px solid #eee; */ 48 | border-radius: 8px; 49 | margin: 0 auto; 50 | float: left; 51 | box-shadow: 0 4px 8px 0 #1d253112; 52 | color: #000; 53 | } 54 | 55 | .link-img span { 56 | line-height: 26px !important; 57 | } 58 | 59 | .card-name { 60 | color: #38404d; 61 | font-weight: 500; 62 | width: 100%; 63 | height: 24px; 64 | line-height: 24px; 65 | font-size: 14px; 66 | text-overflow: ellipsis; 67 | overflow: hidden; 68 | white-space: nowrap; 69 | padding-right: 20px; 70 | } 71 | 72 | .card-description { 73 | margin: 2px 0 0 0; 74 | color: #969eaa; 75 | width: 100%; 76 | height: 20px; 77 | line-height: 20px; 78 | font-size: 12px; 79 | text-overflow: ellipsis; 80 | overflow: hidden; 81 | white-space: nowrap; 82 | } 83 | .titleIcon { 84 | margin-right: 10px; 85 | color: #1d2b3a; 86 | font-size: 16px; 87 | } 88 | 89 | .collect { 90 | position: absolute; 91 | right: 0; 92 | top: 0; 93 | width: 32px; 94 | height: 32px; 95 | border-radius: 4px 24px 4px 16px; 96 | display: flex; 97 | align-items: center; 98 | justify-content: center; 99 | background: rgba(245, 247, 250, 1); 100 | } 101 | 102 | .empty { 103 | text-align: center; 104 | width: 100%; 105 | padding-bottom: 15px; 106 | color: rgba(147, 158, 169, 1); 107 | } 108 | 109 | .collect_icon { 110 | display: none; 111 | width: 32px; 112 | height: 32px; 113 | line-height: 37px; 114 | } 115 | -------------------------------------------------------------------------------- /src/data/sites/main/groups/gis_tools.ts: -------------------------------------------------------------------------------- 1 | import { IGroup } from '../../../types' 2 | export const DataProcess: IGroup = { 3 | icon: 'icon-a-shujuchuli1', 4 | name: 'GIS 软件工具', 5 | en_name: 'data process', 6 | order: 4, 7 | children: [ 8 | { 9 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*kpIwTZzKPrkAAAAAAAAAAAAADrZ5AQ/original', 10 | name: 'QGIS', 11 | en_name: 'QGIS', 12 | description: 13 | 'A free and open-source geographic information system (GIS) for viewing, editing, and analyzing spatial data.', 14 | en_description: 15 | 'A free and open-source geographic information system (GIS) for viewing, editing, and analyzing spatial data.', 16 | site_url: 'https://www.qgis.org/', 17 | order: 11, 18 | tags: ['GIS', 'Open-source', 'Spatial Data'] 19 | }, 20 | { 21 | icon: '', 22 | name: 'GeoDa', 23 | en_name: 'GeoDa', 24 | description: 25 | 'Dedicated to research, education, and software development in spatial analysis and spatial statistics.', 26 | en_description: 27 | 'Dedicated to research, education, and software development in spatial analysis and spatial statistics.', 28 | site_url: 'https://geodacenter.github.io/index-cn.html', 29 | order: 14, 30 | tags: ['Spatial Analysis', 'Spatial Statistics', 'Research'] 31 | }, 32 | { 33 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 34 | name: 'TileMill', 35 | en_name: 'TileMill', 36 | description: '一个开源的地图设计工作室,由志愿者开发的社区提供支持。', 37 | en_description: 38 | 'An open-source map design studio, developed by a community of volunteer open source contributors.', 39 | site_url: 'https://tilemill-project.github.io/tilemill/', 40 | order: 48, 41 | tags: ['Open Source', 'Map Design'] 42 | }, 43 | { 44 | icon: 'http://udig.refractions.net/images/udig.png', 45 | name: 'uDig', 46 | en_name: 'uDig', 47 | description: 48 | '一个轻量级且用户友好的Web GIS。创建、从各种来源导入数据、导出地图或轻松在线分享。', 49 | en_description: 50 | 'A lightweight and user-friendly Web GIS. Create, import data from various sources, export maps or share them online freely and easily.', 51 | site_url: 'http://udig.refractions.net/', 52 | order: 49, 53 | tags: ['GIS', 'Web GIS', 'Data Import', 'Data Export'] 54 | } 55 | ] 56 | } 57 | -------------------------------------------------------------------------------- /src/data/sites/main/groups/data_source.ts: -------------------------------------------------------------------------------- 1 | // 数据可视化 2 | import { IGroup } from '../../../types' 3 | export const DataSource: IGroup = { 4 | icon: 'icon-shujuyuanguanli', 5 | name: '常用数据源', 6 | en_name: 'data source', 7 | order: 3, 8 | children: [ 9 | { 10 | icon: 'https://img.alicdn.com/imgextra/i3/O1CN01NQARus1gyEAmmQ9T0_!!6000000004210-0-tps-670-670.jpg', 11 | name: 'DataV.GeoAtlas', 12 | en_name: 'DataV.GeoAtlas', 13 | description: '行政区数据下载', 14 | en_description: 15 | 'A tool for topologically aware shape simplification. Reads and writes Shapefile, GeoJSON and TopoJSON formats.', 16 | site_url: 'https://datav.aliyun.com/portal/school/atlas/area_selector', 17 | order: 2, 18 | tags: '阿里云,DataV,数据可视化,GeoAtlas,数字孪生,GIS'.split(',') 19 | }, 20 | { 21 | icon: 'https://mdn.alipayobjects.com/huamei_qa8qxu/afts/img/A*uQbXRLw_Q2UAAAAAAAAAAAAADmJ7AQ/original', 22 | name: '行政区划数据下载', 23 | en_name: '', 24 | description: '一站式行政区划数据下载、应用平台', 25 | en_description: 26 | 'L7 AntV geocoding tool to retrieve latitude and longitude by address', 27 | site_url: 'https://l7.antv.antgroup.com/custom/tools', 28 | order: 4, 29 | tags: ['Geocoding', 'Maps', 'Location', 'AntV'] 30 | }, 31 | { 32 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*Yfv_TbDaaRgAAAAAAAAAAAAADrZ5AQ/original', 33 | name: '标准地图服务', 34 | en_name: 'Standard Map Service', 35 | description: '中华人民共和国自然资源部的地理信息服务平台。', 36 | en_description: 37 | "the Geographic Information Service Platform of the Ministry of Natural Resources of the People's Republic of China.", 38 | site_url: 'http://bzdt.ch.mnr.gov.cn/', 39 | order: 12, 40 | tags: ['Geographic Information', 'China', 'Government'] 41 | }, 42 | { 43 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*preMSJSTz4cAAAAAAAAAAAAADrZ5AQ/original', 44 | name: '民政部中国地图', 45 | en_name: 'China Map by the Ministry of Civil Affairs', 46 | description: '中华人民共和国行政区划地图,提供全国范围内的行政区划信息。', 47 | en_description: 48 | // tslint:disable-next-line 49 | "Administrative division map of the People's Republic of China, providing nationwide administrative division information.", 50 | site_url: 'http://xzqh.mca.gov.cn/map', 51 | order: 14, 52 | tags: ['Administrative Division', 'China', 'Map'] 53 | } 54 | ] 55 | } 56 | -------------------------------------------------------------------------------- /src/components/app-search/NarrowSearch.tsx: -------------------------------------------------------------------------------- 1 | import { useState } from 'react' 2 | import { ISearchItem } from '../../data/searchConfig' 3 | import { Input, Button, Space, Drawer, ConfigProvider } from 'antd' 4 | 5 | export const NarrowSearch = (props: { searchConfig: ISearchItem[] }) => { 6 | const { searchConfig } = props 7 | const [curSearchType, setCurSearchType] = useState( 8 | searchConfig[0] 9 | ) 10 | const [searchText, setSearchText] = useState() 11 | const [open, setOpen] = useState(false) 12 | 13 | return ( 14 | <> 15 | 26 | ${curSearchType.name}搜索`} 29 | value={searchText} 30 | onChange={(e) => setSearchText(e.target.value)} 31 | prefix={ 32 | 89 | ) 90 | })} 91 | 92 | 93 | 94 | 95 | ) 96 | } 97 | -------------------------------------------------------------------------------- /src/App.tsx: -------------------------------------------------------------------------------- 1 | import { Layout, FloatButton, ConfigProvider } from 'antd' 2 | import './App.css' 3 | import { AppCard } from './components/app-content' 4 | import { AppSider } from './components/app-sider' 5 | import { useState, useEffect } from 'react' 6 | import classNames from 'classnames' 7 | import { AppHeader } from './components/app-header' 8 | import { AppSearch } from './components/app-search' 9 | import { useLocalStorageState } from 'ahooks' 10 | import { isMobileDevice } from './utils' 11 | import { MobileSider } from './components/mobile-sider' 12 | import zhCN from 'antd/locale/zh_CN' 13 | const { Header, Footer, Sider, Content } = Layout 14 | 15 | function App() { 16 | const [collapsed, setCollapsed] = useState(isMobileDevice()) 17 | const [siteData, setSiteData] = useLocalStorageState('siteData', { 18 | defaultValue: 'main' 19 | }) 20 | const [siteSearch, setSiteSearch] = useState('') 21 | 22 | useEffect(() => { 23 | const currentUrl = new URL(window.location.href) 24 | const searchParams = new URLSearchParams(currentUrl.search) 25 | const siteFromParams = searchParams.get('site') 26 | if (siteFromParams) { 27 | setSiteData(siteFromParams) 28 | } else { 29 | searchParams.append('site', siteData || '') 30 | currentUrl.search = searchParams.toString() 31 | window.history.pushState({}, '', currentUrl) 32 | } 33 | }, [siteData]) 34 | 35 | return ( 36 | 37 | 38 | {!isMobileDevice() ? ( 39 | 45 | 51 | 52 | ) : ( 53 | 58 | )} 59 | 66 | {!isMobileDevice() && ( 67 |
68 | 69 |
70 | )} 71 | 72 | 73 | 74 | 75 | 76 |
DipperMap 星辰地图站点导航
77 | 78 |
79 |
80 |
81 | ) 82 | } 83 | 84 | export default App 85 | -------------------------------------------------------------------------------- /src/data/sites/data/groups/commonly_used.ts: -------------------------------------------------------------------------------- 1 | import { IGroup } from '../../../types' 2 | 3 | export const CommonlyUsed: IGroup = { 4 | icon: 'icon-shujuyuan', 5 | name: '常用站点', 6 | en_name: 'Commonly Used', 7 | order: 1, 8 | children: [ 9 | { 10 | icon: 'https://search.earthdata.nasa.gov/favicon.ico?v=1.1', 11 | name: 'MODIS-NASA Earthdata Search', 12 | en_name: 'MODIS-NASA Earthdata Search', 13 | description: 'MODIS数据发布平台', 14 | en_description: 'MODIS data publishing platform', 15 | site_url: 'https://search.earthdata.nasa.gov/search', 16 | order: 1, 17 | tags: ['Remote Sensing', 'MODIS'] 18 | }, 19 | { 20 | icon: 'https://earthexplorer.usgs.gov/img/favicon.ico', 21 | name: 'Landsat-USGS', 22 | en_name: 'USGS', 23 | description: 'Landsat数据发布平台,同时也包含多种遥感数据浏览和发布', 24 | en_description: 25 | 'Landsat data publishing platform, but also includes a variety of remote sensing data browsing and publishing', 26 | site_url: 'https://earthexplorer.usgs.gov/', 27 | order: 2, 28 | tags: ['Remote Sensing', 'Landsat'] 29 | }, 30 | { 31 | icon: 'https://dataspace.copernicus.eu/favicon.ico', 32 | name: '哨兵数据', 33 | en_name: 'Sentinel data', 34 | description: '哨兵数据发布平台', 35 | en_description: 'Sentinel data publish platform', 36 | site_url: 'https://dataspace.copernicus.eu/browser/', 37 | order: 3, 38 | tags: ['Remote Sensing', 'Sentinel'] 39 | }, 40 | { 41 | icon: '', 42 | name: '地理空间数据云', 43 | en_name: 'Geospatial Cloud', 44 | description: 45 | '免费DEM数据、Landsat系列、中巴资源卫星、MODIS数据的各种产品、EO-1数据、NOAAA VHRR数据产品、Sentinel数据等。账号注册,通过审核直接下载即可。', 46 | en_description: 47 | 'Stable data resource updates, including free data such as Landsat series, China-Pakistan Resource Satellite, various products of MODIS data, DEM digital elevation data, EO-1 data, NOAA VHRR data products, Sentinel data, etc. Account registration allows direct download upon approval.', 48 | site_url: 'http://www.gscloud.cn/sources', 49 | order: 4, 50 | tags: ['Remote Sensing', 'Satellite', 'Earth Observation'] 51 | }, 52 | { 53 | icon: 'https://ladsweb.modaps.eosdis.nasa.gov/images/favicon/index.ico', 54 | name: '一级和大气存档与分发系统分布式活动存档中心', 55 | en_name: 56 | 'Level 1 and Atmospheric Archive and Distribution System Distributed Active Archive Center', 57 | description: 58 | 'LAADS DAAC是美国国家航空航天局戈达德航天中心用于存储数据的网站接口。该平台提供了MODIS、Envisat、Sentinel等常见遥感数据。', 59 | en_description: 60 | "LAADS DAAC, the Level 1 and Atmospheric Archive and Distribution System Distributed Active Archive Center, is a website interface used by NASA's Goddard Space Flight Center for data storage. The platform offers commonly used remote sensing data such as MODIS, Envisat, Sentinel, and more.", 61 | site_url: 'https://ladsweb.modaps.eosdis.nasa.gov/', 62 | order: 5, 63 | tags: ['NASA', 'Remote Sensing Data', 'MODIS', 'Envisat', 'Sentinel'] 64 | } 65 | ] 66 | } 67 | -------------------------------------------------------------------------------- /src/data/sites/tech/groups/geospatial_library/c.ts: -------------------------------------------------------------------------------- 1 | import { IGroup } from '../../../../types' 2 | export const C: IGroup = { 3 | icon: 'icon-cyuyan', 4 | name: 'C 语言', 5 | en_name: 'C', 6 | order: 5, 7 | children: [ 8 | { 9 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 10 | name: 'Datamaps', 11 | en_name: 'Datamaps', 12 | description: 13 | '用于索引大型地理点或线列表并从索引动态生成地图瓦片以进行显示的工具。', 14 | en_description: 15 | 'This is a tool for indexing large lists of geographic points or lines and dynamically generating map tiles from the index for display.', 16 | site_url: 'https://github.com/ericfischer/datamaps', 17 | order: 84, 18 | tags: ['Geographic Points', 'Map Tiles', 'Indexing'] 19 | }, 20 | { 21 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 22 | name: 'H3', 23 | en_name: 'H3', 24 | description: '六边形分层地理空间索引系统。', 25 | en_description: 'Hexagonal hierarchical geospatial indexing system.', 26 | site_url: 'https://github.com/uber/h3', 27 | order: 85, 28 | tags: ['Hexagonal', 'Geospatial Indexing'] 29 | }, 30 | { 31 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 32 | name: 'libpostal', 33 | en_name: 'libpostal', 34 | description: 35 | '用于解析/标准化世界各地街道地址的 C 库。由统计自然语言处理和开放地理数据驱动。', 36 | en_description: 37 | 'A C library for parsing/normalizing street addresses around the world. Powered by statistical NLP and open geo data.', 38 | site_url: 'https://github.com/openvenues/libpostal', 39 | order: 86, 40 | tags: ['Street Addresses', 'C Library', 'NLP', 'Geodata'] 41 | }, 42 | { 43 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 44 | name: 'libvips', 45 | en_name: 'libvips', 46 | description: '低内存需求的快速图像处理库。', 47 | en_description: 'A fast image processing library with low memory needs.', 48 | site_url: 'https://github.com/libvips/libvips', 49 | order: 87, 50 | tags: ['Image Processing', 'Low Memory'] 51 | }, 52 | { 53 | icon: '', 54 | name: 'Shapefile C Library', 55 | en_name: 'Shapefile C Library', 56 | description: 57 | '提供用于读取、写入和更新(在有限程度上).shp 和 .dbf 文件的简单 C 程序的能力。', 58 | en_description: 59 | 'Provides the ability to write simple C programs for reading, writing and updating (to a limited extent) .shp and .dbf files.', 60 | site_url: 'http://shapelib.maptools.org/', 61 | order: 88, 62 | tags: ['.shp Files', '.dbf Files', 'C Library'] 63 | }, 64 | { 65 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 66 | name: 'YOLT', 67 | en_name: 'YOLT', 68 | description: 'You Only Look Twice: 快速多尺度卫星图像对象检测。', 69 | en_description: 70 | 'You Only Look Twice: Rapid Multi-Scale Object Detection In Satellite Imagery.', 71 | site_url: 'https://github.com/CosmiQ/yolt', 72 | order: 89, 73 | tags: ['Satellite Imagery', 'Object Detection'] 74 | } 75 | ] 76 | } 77 | -------------------------------------------------------------------------------- /src/data/sites/data/groups/industry_data.ts: -------------------------------------------------------------------------------- 1 | import { IGroup } from '../../../types' 2 | 3 | export const IndustryData: IGroup = { 4 | icon: 'icon-ditupeise', 5 | name: '行业数据', 6 | en_name: 'Industry Data', 7 | order: 3, 8 | children: [ 9 | { 10 | icon: 'https://www.forestdata.cn/image/logo1-4-129x128.png', 11 | name: '国家林业和草原科学数据中心', 12 | en_name: 'National Forestry and Grassland Science Data Center', 13 | description: 14 | '林业数据中心整合了森林资源、草原资源、湿地资源、荒漠化资源、自然保护资源、林业生态环境资源、森林保护、森林培育、木材科学与技术、林业科技文献、林业科技项目及林业行业发展等科学数据,以提供数据共享服务。用户用注册登录后,填写项目用途,部分数据收费下载。', 15 | en_description: 16 | 'The forestry data center integrates scientific data on forest resources, grassland resources, wetland resources, desertification resources, natural protection resources, forestry ecological environment resources, forest protection, forest cultivation, wood science and technology, forestry science and technology literature, forestry science and technology projects, and forestry industry development to provide data sharing services. After registering and logging in, users can fill in the purpose of the project, and some data are available for a fee.', 17 | site_url: 'https://www.forestdata.cn/', 18 | order: 2, 19 | tags: ['Forestry', 'Ecology', 'Environmental Data'] 20 | }, 21 | { 22 | icon: 'https://vsso.nssdc.ac.cn/favicon.ico', 23 | name: '空间科学虚拟观测台', 24 | en_name: 'Virtual Space Science Observatory', 25 | description: 26 | '空间科学虚拟观测台数据资源覆盖空间物理、空间天文、行星科学、空间地球科学四大学科,已建成24个专业数据库。', 27 | en_description: 28 | 'The data resources of the Space Science Virtual Observatory cover the four major disciplines of space physics, space astronomy, planetary science, and space earth science. Twenty-four professional databases have been established.', 29 | site_url: 'https://vsso.nssdc.ac.cn/nssdc_zh/html/vssoindex.html', 30 | order: 4, 31 | tags: ['Space Science', 'Virtual Observatory', 'Observational Data'] 32 | }, 33 | { 34 | icon: 'http://www.envicloud.cn/images/head/envicloud.ico', 35 | name: '环境云', 36 | en_name: 'Envicloud', 37 | description: 38 | '环境云收录了专业数据源,包括国家环保部数据中心、美国全球地震信息中心等发布的各类环境数据。通过该平台,用户可以获取全面的环境监测信息,涵盖空气质量、水质监测、生态环境等多个领域。', 39 | en_description: 40 | 'Envicloud compiles data from various professional sources, including the National Environmental Protection Data Center and the U.S. Global Seismic Information Center. The platform provides comprehensive environmental data, covering areas such as air quality, water quality monitoring, and ecological environment. Users can access a wide range of environmental monitoring information.', 41 | site_url: 'http://www.envicloud.cn/', 42 | order: 4, 43 | tags: [ 44 | 'Environmental Science', 45 | 'Data Platform', 46 | 'Environmental Monitoring' 47 | ] 48 | }, 49 | { 50 | icon: 'https://openflights.org/img/icon_favicon.png', 51 | name: 'OpenFlights', 52 | en_name: 'OpenFlights', 53 | description: 54 | 'OpenFlights提供航空航天以及航线数据,可用于绘制全球航班地图。用户可以通过搜索和过滤航班,并自动计算统计数据。', 55 | en_description: 56 | 'OpenFlights provides aviation and route data for creating global flight maps. Users can search and filter flights, and automatically calculate statistical data.', 57 | site_url: 'https://openflights.org/data', 58 | tags: [ 59 | 'Aviation Data', 60 | 'Flight Routes', 61 | 'Global Flight Map', 62 | 'Statistical Data' 63 | ] 64 | } 65 | ] 66 | } 67 | -------------------------------------------------------------------------------- /src/components/app-content/component/collect.tsx: -------------------------------------------------------------------------------- 1 | import { Avatar, Card, Col, Empty, Row, Tooltip } from 'antd' 2 | import { IconFont } from '../../../constants' 3 | import { IItem } from '../../../data/types' 4 | import { useEffect, useState } from 'react' 5 | 6 | type collectPopup = { 7 | localCollect: IItem[] 8 | setLocalCollect: (val: IItem[]) => void 9 | } 10 | 11 | export const CollectCard: React.FC = ({ 12 | localCollect, 13 | setLocalCollect 14 | }) => { 15 | const [collectData, setCollectData] = useState(undefined) 16 | 17 | useEffect(() => { 18 | if (localCollect) { 19 | const newData = Object.values(localCollect).flat() 20 | setCollectData(newData) 21 | } 22 | }, [localCollect]) 23 | 24 | return ( 25 | 29 |
30 | 31 |
32 | 33 |
收藏
34 | 35 | } 36 | className="item-content" 37 | id={`map-collect`} 38 | > 39 | 40 | {collectData?.length ? ( 41 | collectData.map((val) => { 42 | return ( 43 | { 50 | window.open(val.site_url) 51 | }} 52 | key={`collect_${val.site_url}`} 53 | > 54 |
55 |
56 | 62 | {val.icon ? null : val.name.charAt(0)} 63 | 64 |
65 |
66 | {val.name} 67 | 68 |

{val.description}

69 |
70 |
71 |
72 | { 79 | console.log(val) 80 | e.stopPropagation() 81 | const newSiteData = localCollect?.filter((item) => { 82 | return ( 83 | item.name !== val.name && 84 | item.site_url !== val.site_url 85 | ) 86 | }) 87 | setLocalCollect(newSiteData) 88 | }} 89 | /> 90 |
91 |
92 | 93 | ) 94 | }) 95 | ) : ( 96 |
97 | 101 |
102 | )} 103 |
104 |
105 | ) 106 | } 107 | -------------------------------------------------------------------------------- /src/components/app-sider/index.css: -------------------------------------------------------------------------------- 1 | .logo { 2 | padding: 14px 20px; 3 | background: rgba(255, 255, 255, 0.02); 4 | text-align: center; 5 | position: relative; 6 | display: flex; 7 | align-items: center; 8 | justify-content: space-between; 9 | height: 64px; 10 | } 11 | 12 | .silder-select { 13 | display: flex; 14 | align-items: center; 15 | justify-content: flex-end; 16 | width: 80px; 17 | cursor: pointer; 18 | } 19 | 20 | .all-tag { 21 | padding: 20px; 22 | overflow: hidden; 23 | min-width: 280px; 24 | } 25 | 26 | .tag-item { 27 | border: solid 1px rgba(255, 255, 255, 0.06); 28 | padding: 4px 10px; 29 | border-radius: 15px; 30 | font-weight: 400; 31 | cursor: pointer; 32 | margin-bottom: 8px; 33 | border-radius: 999px; 34 | } 35 | 36 | .tag-item:hover { 37 | background-color: rgba(255, 255, 255, 0.12); 38 | color: #fff; 39 | } 40 | 41 | .tag { 42 | background-color: #ffffff10; 43 | color: #fff; 44 | font-weight: 500; 45 | } 46 | 47 | .selected-tag { 48 | background-color: #fff; 49 | color: #1d2531; 50 | font-weight: 500; 51 | } 52 | 53 | .selected-tag:hover { 54 | background-color: #fff; 55 | color: #1d2531; 56 | } 57 | 58 | .site { 59 | display: flex; 60 | align-items: center; 61 | justify-content: space-between; 62 | } 63 | 64 | .active-site-text { 65 | color: #fff; 66 | font-size: 14px; 67 | margin-right: 8px; 68 | } 69 | 70 | .site-text { 71 | color: #7a7f86; 72 | font-size: 14px; 73 | margin-right: 8px; 74 | } 75 | 76 | .site-icon { 77 | display: flex; 78 | flex-direction: column; 79 | font-size: 9px; 80 | color: #7a7f86; 81 | } 82 | 83 | .active-site-icon { 84 | display: flex; 85 | flex-direction: column; 86 | font-size: 9px; 87 | color: #fff; 88 | } 89 | 90 | .site-content { 91 | width: 240px; 92 | position: absolute; 93 | /* height: 200px; */ 94 | background: rgba(34, 41, 53, 1); 95 | top: 61px; 96 | left: 20px; 97 | z-index: 20; 98 | padding: 20px 10px; 99 | border-radius: 8px; 100 | border: solid 1px rgba(255, 255, 255, 0.12); 101 | } 102 | 103 | .active-site-item { 104 | background: linear-gradient( 105 | to top, 106 | rgba(255, 255, 255, 0.4), 107 | rgba(255, 255, 255, 1) 108 | ); 109 | border: solid 1px rgba(255, 255, 255, 1); 110 | display: flex; 111 | align-items: center; 112 | justify-content: space-between; 113 | height: 40px; 114 | line-height: 40px; 115 | color: #000; 116 | border-radius: 6px; 117 | padding: 0px 12px; 118 | margin-bottom: 10px; 119 | cursor: pointer; 120 | } 121 | 122 | .site-item { 123 | display: flex; 124 | align-items: center; 125 | justify-content: space-between; 126 | height: 40px; 127 | line-height: 40px; 128 | border: solid 1px rgba(255, 255, 255, 0.2); 129 | background: linear-gradient( 130 | to bottom, 131 | rgba(255, 255, 255, 0.2), 132 | rgba(255, 255, 255, 0.06) 133 | ); 134 | color: #fff; 135 | border-radius: 6px; 136 | padding: 0px 12px; 137 | margin-bottom: 10px; 138 | cursor: pointer; 139 | } 140 | 141 | .collapsed_block { 142 | text-align: center; 143 | margin-top: 20px; 144 | font-size: 22px; 145 | position: relative; 146 | } 147 | 148 | .collapsed_icon { 149 | padding: 6px; 150 | background: rgba(255, 255, 255, 0.12); 151 | border-radius: 4px; 152 | } 153 | 154 | .collapsed_icon:hover { 155 | background: rgba(255, 255, 255, 0.2); 156 | } 157 | 158 | .active_collapsed_icon { 159 | padding: 5px; 160 | background: #fff; 161 | color: #1d2531; 162 | border-radius: 4px; 163 | fill: rgba(255, 255, 255, 0.85); 164 | } 165 | 166 | .collapsed_tag { 167 | position: fixed; 168 | width: 408px; 169 | left: 86px; 170 | top: 50px; 171 | background-color: #1d2531; 172 | padding: 20px 20px 12px 20px; 173 | border-radius: 8px; 174 | text-align: left; 175 | } 176 | -------------------------------------------------------------------------------- /src/data/sites/main/groups/competition.ts: -------------------------------------------------------------------------------- 1 | import { IGroup } from '../../../types' 2 | 3 | export const Competition: IGroup = { 4 | icon: 'icon-ditupeise', 5 | name: '竞赛', 6 | en_name: 'Competition', 7 | order: 13, 8 | children: [ 9 | { 10 | icon: 'https://img.alicdn.com/tfs/TB1_ZXuNcfpK1RjSZFOXXa6nFXa-32-32.ico', 11 | name: '阿里天池 Tianchi', 12 | en_name: 'Tianchi', 13 | description: 14 | '阿里天池是一个数据科学和人工智能竞赛平台,致力于为数据科学家、工程师和研究人员提供一个开放、共享的创新空间。在阿里天池,你可以参与各种数据竞赛,与全球的数据科学家共同解决实际问题,学习最新的数据科学和人工智能技术。', 15 | en_description: 16 | 'Tianchi, powered by Alibaba, is a platform for data science and artificial intelligence competitions. It aims to provide an open and collaborative space for data scientists, engineers, and researchers. On Tianchi, you can participate in various data competitions, collaborate with data scientists worldwide to solve real-world problems, and stay updated on the latest advancements in data science and artificial intelligence.', 17 | site_url: 'https://tianchi.aliyun.com/', 18 | order: 4, 19 | tags: ['Data Science', 'Machine Learning', 'Competition', 'Community'] 20 | }, 21 | { 22 | icon: 'https://contest.geoscene.cn/favicon.ico', 23 | name: '易智瑞杯中国大学生GIS软件开发竞赛', 24 | en_name: 'Geoscene Cup', 25 | description: 26 | '易智瑞杯中国大学生GIS软件开发竞赛官方网站,是中国大学生GIS领域的重要赛事平台。竞赛旨在促进大学生在地理信息系统(GIS)领域的创新和技术发展,提供一个展示和交流GIS软件开发技能的舞台。', 27 | en_description: 28 | 'The official website of the Geoscene Cup, the EasyGIS Cup Chinese University GIS Software Development Competition, is a significant platform for GIS competitions among Chinese university students. The competition aims to foster innovation and technological development in the field of Geographic Information Systems (GIS) among college students, providing a stage to showcase and exchange skills in GIS software development.', 29 | site_url: 'https://contest.geoscene.cn/', 30 | order: 5, 31 | tags: ['GIS', 'Software Development', 'Competition', 'Education'] 32 | }, 33 | { 34 | icon: 'http://contest.gisera.com/theme/default/images/favicon.ico', 35 | name: '全国高校GIS技能大赛官网', 36 | en_name: 'National College GIS Skills Competition', 37 | description: 38 | '全国高校GIS技能大赛官方网站,是中国各高校GIS技能竞赛的统一平台。该赛事旨在推动高校学生在地理信息系统(GIS)领域的学习与交流,促进GIS技能的提升与创新。', 39 | en_description: 40 | 'The official website of the National College GIS Skills Competition is the unified platform for GIS skills competitions in various universities across China. The competition aims to promote learning and exchange among university students in the field of Geographic Information Systems (GIS), fostering the improvement and innovation of GIS skills.', 41 | site_url: 'https://gisera.com/', 42 | order: 6, 43 | tags: ['GIS', 'Skills Competition', 'Education', 'Technology'] 44 | }, 45 | { 46 | icon: '', 47 | name: '全国大学生测绘学科创新创业智能大赛', 48 | en_name: 49 | "National College Students' Innovation and Entrepreneurship Intelligent Competition in Surveying and Mapping", 50 | description: 51 | '全国大学生测绘学科创新创业智能大赛旨在促进大学生在测绘学科领域的创新和创业,为他们提供展示才华和交流经验的平台。该赛事关注测绘科技的前沿发展,鼓励学生运用智能技术、创新思维解决实际问题,推动测绘行业的发展。', 52 | en_description: 53 | "The National College Students' Innovation and Entrepreneurship Intelligent Competition in Surveying and Mapping aims to promote innovation and entrepreneurship among college students in the field of surveying and mapping. It provides a platform for students to showcase their talents and exchange experiences. The competition focuses on the cutting-edge development of surveying and mapping technology, encouraging students to apply intelligent technology and innovative thinking to solve practical problems, thereby advancing the development of the surveying and mapping industry.", 54 | site_url: 'https://smt.whu.edu.cn/sshd/dxscxcyznds.htm', 55 | order: 7, 56 | tags: [ 57 | 'Surveying and Mapping', 58 | 'Innovation', 59 | 'Entrepreneurship', 60 | 'Intelligent Technology' 61 | ] 62 | } 63 | ] 64 | } 65 | -------------------------------------------------------------------------------- /src/data/sites/tech/groups/map_engine.ts: -------------------------------------------------------------------------------- 1 | import { IGroup } from '../../../types' 2 | export const MapEngine: IGroup = { 3 | icon: 'icon-ditu', 4 | name: '地图可视化', 5 | en_name: 'Map Engine', 6 | order: 1, 7 | children: [ 8 | { 9 | icon: 'https://gw.alipayobjects.com/zos/antfincdn/OI%26h7HXH33/L7%252520dilikongjianshujukeshihua.svg', 10 | name: 'L7', 11 | en_name: 'L7', 12 | description: 13 | 'Large-scale WebGL-powered Geospatial Data Visualization library.', 14 | en_description: 15 | 'Large-scale WebGL-powered Geospatial Data Visualization library.', 16 | site_url: 'https://github.com/antvis/l7', 17 | order: 27, 18 | tags: ['WebGL', 'Geospatial', 'Data Visualization'] 19 | }, 20 | { 21 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*BUiIRqsFAbYAAAAAAAAAAAAADrZ5AQ/original', 22 | name: 'deck.gl', 23 | en_name: 'deck.gl', 24 | description: 25 | 'A WebGL-powered framework for visual exploratory data analysis of large datasets.', 26 | en_description: 27 | 'A WebGL-powered framework for visual exploratory data analysis of large datasets.', 28 | site_url: 'https://github.com/visgl/deck.gl', 29 | order: 28, 30 | tags: ['WebGL', 'Data Visualization', 'Large Datasets'] 31 | }, 32 | { 33 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*Y9hQQIqG4RwAAAAAAAAAAAAADrZ5AQ/original', 34 | name: 'Leaflet', 35 | en_name: 'Leaflet', 36 | description: 'An open-source JavaScript library for interactive maps.', 37 | en_description: 'An open-source JavaScript library for interactive maps.', 38 | site_url: 'https://github.com/Leaflet/Leaflet', 39 | order: 1, 40 | tags: ['Interactive Maps', 'JavaScript Library', 'Open-source'] 41 | }, 42 | { 43 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*AovwR7a7TqkAAAAAAAAAAAAADrZ5AQ/original', 44 | name: 'Mapbox GL JS', 45 | en_name: 'Mapbox GL JS', 46 | description: 47 | 'A WebGL-powered library for creating beautiful, high-performance interactive maps.', 48 | en_description: 49 | 'A WebGL-powered library for creating beautiful, high-performance interactive maps.', 50 | site_url: 'https://github.com/mapbox/mapbox-gl-js', 51 | order: 2, 52 | tags: ['WebGL', 'Interactive Maps', 'Data Visualization'] 53 | }, 54 | { 55 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*ebYBSJl97_8AAAAAAAAAAAAADrZ5AQ/original', 56 | name: 'OpenLayers', 57 | en_name: 'OpenLayers', 58 | description: 59 | 'A high-performance, feature-packed library for creating interactive maps on the web.', 60 | en_description: 61 | 'A high-performance, feature-packed library for creating interactive maps on the web.', 62 | site_url: 'https://github.com/openlayers/openlayers', 63 | order: 3, 64 | tags: ['Interactive Maps', 'JavaScript Library', 'Web'] 65 | }, 66 | { 67 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*BJsjQrU57ZkAAAAAAAAAAAAADrZ5AQ/original', 68 | name: 'MapLibre', 69 | en_name: 'MapLibre', 70 | description: 71 | 'An open-source JavaScript library for interactive maps, a fork of Mapbox GL JS.', 72 | en_description: 73 | 'An open-source JavaScript library for interactive maps, a fork of Mapbox GL JS.', 74 | site_url: 'https://github.com/maplibre/maplibre-gl-js', 75 | order: 4, 76 | tags: ['Open-source', 'JavaScript Library', 'Interactive Maps'] 77 | }, 78 | { 79 | icon: 'https://mdn.alipayobjects.com/huamei_gjo0cl/afts/img/A*SLH1QZOg_JAAAAAAAAAAAAAADjDHAQ/original', 80 | name: 'Maptalks', 81 | en_name: 'Maptalks', 82 | description: 83 | 'A lightweight JavaScript library for integrated 2D/3D maps and spatial analysis.', 84 | en_description: 85 | 'A lightweight JavaScript library for integrated 2D/3D maps and spatial analysis.', 86 | site_url: 'https://github.com/maptalks/maptalks.js', 87 | order: 5, 88 | tags: ['JavaScript Library', '2D/3D Maps', 'Spatial Analysis'] 89 | } 90 | ] 91 | } 92 | -------------------------------------------------------------------------------- /src/data/sites/main/groups/rs_platform.ts: -------------------------------------------------------------------------------- 1 | import { IGroup } from '../../../types' 2 | export const RSPlatform: IGroup = { 3 | icon: 'icon-yaogancehui', 4 | name: '遥感平台', 5 | en_name: 'RS Platform', 6 | order: 6, 7 | children: [ 8 | // gee 9 | { 10 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*527fS73uMqUAAAAAAAAAAAAADrZ5AQ/original', 11 | name: 'Google Earth Engine', 12 | en_name: 'Google Earth Engine', 13 | description: 'Google Earth Engine', 14 | en_description: 'Google Earth Engine', 15 | site_url: 'https://earthengine.google.com/', 16 | order: 2, 17 | tags: ['GIS', 'Web', 'Data'] 18 | }, 19 | { 20 | icon: 'https://img.alicdn.com/imgextra/i4/O1CN01KsDwjf1a87SCHK9Kv_!!6000000003284-73-tps-128-128.ico', 21 | name: 'AIEarth', 22 | en_name: 'Aliyun AIEarth', 23 | description: '阿里云地球引擎,提供强大的地理信息处理和可视化服务。', 24 | en_description: 25 | 'Aliyun AIEarth, providing powerful geospatial processing and visualization services.', 26 | site_url: 'https://engine-aiearth.aliyun.com/#/', 27 | order: 7, 28 | tags: ['Cloud Computing', 'Geospatial Processing', 'Visualization'] 29 | }, 30 | { 31 | icon: 'https://online.geovisearth.com/favicon.ico', 32 | name: '星球地图', 33 | en_name: 'GeoVis Earth Online Browser', 34 | description: 'GeoVis Earth 在线浏览器,提供强大的地理可视化服务。', 35 | en_description: 36 | 'GeoVis Earth Online Browser, providing powerful geospatial visualization services.', 37 | site_url: 'https://online.geovisearth.com/browser', 38 | order: 8, 39 | tags: ['Geospatial Visualization', 'Maps', 'Online Browser'] 40 | }, 41 | { 42 | icon: 'https://mdn.alipayobjects.com/huamei_gjo0cl/afts/img/A*IB2tSa2hA0sAAAAAAAAAAAAADjDHAQ/original', 43 | name: 'SenseEarth Cloud', 44 | en_name: 'SenseEarth Cloud', 45 | description: 'SenseEarth Cloud 提供先进的地球观测数据处理和分析服务。', 46 | en_description: 47 | 'SenseEarth Cloud offers advanced Earth observation data processing and analysis services.', 48 | site_url: 'https://senseearth-cloud.com/', 49 | order: 9, 50 | tags: [ 51 | 'Earth Observation', 52 | 'Data Processing', 53 | 'Analysis', 54 | 'Cloud Services' 55 | ] 56 | }, 57 | { 58 | icon: 'https://engine.piesat.cn/favicon.ico', 59 | name: 'PIESAT Engine', 60 | en_name: 'PIESAT Engine', 61 | description: 'PIESAT Engine 提供全球卫星影像数据服务与应用解决方案。', 62 | en_description: 63 | 'PIESAT Engine offers global satellite imagery data services and application solutions.', 64 | site_url: 'https://engine.piesat.cn/', 65 | order: 10, 66 | tags: ['Satellite Imagery', 'Data Services', 'Geospatial Applications'] 67 | }, 68 | { 69 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*gLUJTZxg6usAAAAAAAAAAAAADrZ5AQ/original', 70 | name: 'EO Browser', 71 | en_name: 'EO Browser', 72 | description: 'EO Browser 是 Sentinel Hub 提供的在线遥感图像浏览工具。', 73 | en_description: 74 | 'EO Browser is an online remote sensing image browsing tool provided by Sentinel Hub.', 75 | site_url: 'https://apps.sentinel-hub.com/eo-browser', 76 | order: 15, 77 | tags: ['Earth Observation', 'Satellite Imagery', 'Remote Sensing'] 78 | }, 79 | { 80 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*83WgR51K6xgAAAAAAAAAAAAADrZ5AQ/original', 81 | name: 'EOS LandViewer', 82 | en_name: 'EOS LandViewer', 83 | description: 'EOS LandViewer 是一个提供卫星图像和地理信息的在线平台。', 84 | en_description: 85 | 'EOS LandViewer is an online platform providing satellite imagery and geospatial information.', 86 | site_url: 'https://eos.com/landviewer/?day=true&s=Modis', 87 | order: 16, 88 | tags: ['Satellite Imagery', 'Geospatial Information', 'Remote Sensing'] 89 | }, 90 | { 91 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*RCHPRq0zdWkAAAAAAAAAAAAADrZ5AQ/original', 92 | name: '卫星资源中心数据平台', 93 | en_name: 'Cresda Data Platform', 94 | description: 'Cresda 数据平台提供地球空间数据的集成、管理和应用服务。', 95 | en_description: 96 | 'Cresda Data Platform offers integrated, managed, and applied services for Earth spatial data.', 97 | site_url: 'https://data.cresda.cn/#/home', 98 | order: 18, 99 | tags: [ 100 | 'Spatial Data', 101 | 'Data Integration', 102 | 'Data Management', 103 | 'Data Application' 104 | ] 105 | } 106 | ] 107 | } 108 | -------------------------------------------------------------------------------- /src/components/app-header/index.tsx: -------------------------------------------------------------------------------- 1 | import { 2 | MenuFoldOutlined, 3 | MenuUnfoldOutlined, 4 | WechatOutlined, 5 | GithubOutlined, 6 | FlagOutlined 7 | } from '@ant-design/icons' 8 | import './index.css' 9 | import { Button, Divider, Tooltip, Tour, TourProps } from 'antd' 10 | import weChat from '../../assets/weixin.jpeg' 11 | import { useEffect, useLayoutEffect, useState } from 'react' 12 | import { useLocalStorageState } from 'ahooks' 13 | 14 | type AppHeaderProps = { 15 | collapsed: boolean 16 | setCollapsed: (val: boolean) => void 17 | } 18 | 19 | type TourSteps = { 20 | title: string 21 | description: string 22 | target: () => HTMLElement | null 23 | } 24 | 25 | export const AppHeader: React.FC = ({ 26 | setCollapsed, 27 | collapsed 28 | }) => { 29 | const [open, setOpen] = useState(false) 30 | const [firstOpen, setFirstOpen] = useLocalStorageState('firstOpen', { 31 | defaultValue: true 32 | }) 33 | const [startTour, setStartTour] = useState(undefined) 34 | 35 | useEffect(() => { 36 | if (firstOpen) { 37 | setOpen(true) 38 | setFirstOpen(false) 39 | } 40 | }, []) 41 | 42 | useLayoutEffect(() => { 43 | const steps = [ 44 | { 45 | title: '快速站点切换', 46 | description: 47 | '通过点击“站点切换”,即可轻松浏览每个站点下的独特网站内容。', 48 | target: () => document.getElementById('app-site') as HTMLElement 49 | }, 50 | { 51 | title: '站点内搜索', 52 | description: '在搜索框输入关键字,快速找到站点内相关的网站和信息。', 53 | target: () => document.getElementById('app-input') as HTMLElement 54 | }, 55 | { 56 | title: '标签快速导航', 57 | description: '点击不同的快速导航标签,页面将立即滚动至对应的内容区域。', 58 | target: () => document.getElementById('app-tag') as HTMLElement 59 | }, 60 | { 61 | title: '搜索引擎直达', 62 | description: 63 | '选中想要的搜索引擎,输入关键词并按回车,直接进入搜索结果页面。', 64 | target: () => document.getElementById('app-search') as HTMLElement 65 | }, 66 | { 67 | title: '一键收藏功能', 68 | description: '对您感兴趣的站点进行一键收藏。', 69 | target: () => document.getElementById('map-collect') as HTMLElement 70 | }, 71 | { 72 | title: '网站快速访问', 73 | description: 74 | '点选卡片中的网站链接,即可直接跳转访问。将鼠标悬停至卡片右上角,一键添加至收藏。', 75 | target: () => { 76 | const elements = document.getElementsByClassName('item-content') 77 | if ( 78 | elements && 79 | elements.length > 1 && 80 | elements[1] instanceof HTMLElement 81 | ) { 82 | return elements[1] as HTMLElement 83 | } 84 | return null // 如果没有找到元素,返回 null 85 | } 86 | } 87 | ] 88 | setStartTour(steps) 89 | }, []) 90 | 91 | return ( 92 |
93 |
{ 95 | setCollapsed(!collapsed) 96 | }} 97 | > 98 |
99 | {collapsed ? : } 100 |
101 |
102 |
103 |
104 | 113 | 114 |
115 | 116 |
117 | 122 |
123 | 微信扫一扫关注 124 |
125 | 131 |
132 | } 133 | > 134 | 135 | 136 |
137 |
138 | { 141 | window.open('https://github.com/DipperMap/dippermap') 142 | }} 143 | /> 144 |
145 |
146 | 147 | setOpen(false)} 150 | steps={startTour as TourProps['steps']} 151 | /> 152 | 153 | ) 154 | } 155 | -------------------------------------------------------------------------------- /src/data/sites/main/groups/visualization.ts: -------------------------------------------------------------------------------- 1 | // 数据可视化 2 | import { IGroup } from '../../../types' 3 | export const Visulization: IGroup = { 4 | icon: 'icon-shujukeshihua1', 5 | name: '数据编辑与可视化', 6 | en_name: 'Editor Visualization', 7 | order: 1, 8 | children: [ 9 | { 10 | icon: 'https://mdn.alipayobjects.com/huamei_k6sfo0/afts/img/A*RSdESJd70P8AAAAAAAAAAAAADjWqAQ/original', 11 | name: 'L7Editor', 12 | en_name: 'L7Editor', 13 | description: '多底图地理绘制工具', 14 | en_description: 'Multi-base map geographic drawing tool', 15 | site_url: 'https://l7editor.antv.antgroup.com/', 16 | order: 2, 17 | tags: ['GIS', 'Web', 'Data'] 18 | }, 19 | { 20 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*SatiTZtUKpEAAAAAAAAAAAAADrZ5AQ/original', 21 | name: 'MapShaper', 22 | en_name: 'MapShaper', 23 | description: '地理数据预览,编辑工具', 24 | en_description: 25 | 'A tool for topologically aware shape simplification. Reads and writes Shapefile, GeoJSON and TopoJSON formats.', 26 | site_url: 'http://www.mapshaper.org/', 27 | order: 2, 28 | tags: ['GIS', 'Web', 'Data'] 29 | }, 30 | { 31 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*vx_HRKv0_NQAAAAAAAAAAAAADrZ5AQ/original', 32 | name: 'Geojson.io', 33 | en_name: 'Geojson.io', 34 | description: '用于创建、查看和共享空间数据的快速、简单的工具。', 35 | en_description: 36 | 'A quick, simple tool for creating, viewing, and sharing spatial data.', 37 | site_url: 'https://geojson.io', 38 | order: 2, 39 | tags: ['GIS', 'Web', 'Data'] 40 | }, 41 | { 42 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*AovwR7a7TqkAAAAAAAAAAAAADrZ5AQ/original', 43 | name: 'Mapbox Developer Tools', 44 | en_name: 'Mapbox Developer Tools', 45 | description: 46 | 'A collection of developer tools and resources for working with Mapbox services and APIs.', 47 | en_description: 48 | 'A collection of developer tools and resources for working with Mapbox services and APIs.', 49 | site_url: 'https://docs.mapbox.com/resources/dev-tools/', 50 | order: 13, 51 | tags: ['Developer Tools', 'Mapbox', 'APIs'] 52 | }, 53 | { 54 | icon: 'https://mdn.alipayobjects.com/huamei_qa8qxu/afts/img/A*WCVLT5Dp5oYAAAAAAAAAAAAADmJ7AQ/original', 55 | name: 'L7VP', 56 | en_name: 'L7VP', 57 | description: 58 | '下一代地理空间智能可视分析工具和应用研发平台,具有丰富的可视化效果提供洞察分析、地图应用搭建工具、开放扩展能力', 59 | en_description: 60 | 'The next generation of geospatial intelligent visual analysis tools and application development platforms, with rich visualization effectsProvide insight analysis, map application building tools, and open expansion capabilities', 61 | site_url: 'https://li.antv.antgroup.com', 62 | order: 2, 63 | tags: ['GIS', 'Web', 'Data'] 64 | }, 65 | { 66 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*961pR7cnTXQAAAAAAAAAAAAADrZ5AQ/original', 67 | name: 'kepler.gl', 68 | en_name: 'kepler.gl', 69 | description: 70 | 'kepler.gl是一个基于React的开源地理空间分析工具,用于创建大规模、可交互的地理信息可视化应用', 71 | en_description: 72 | 'kepler.gl is an open source geospatial analysis tool based on React, used to create large-scale, interactive geospatial visualization applications', 73 | site_url: 'https://kepler.gl/', 74 | order: 2, 75 | tags: ['GIS', 'Web', 'Data'] 76 | }, 77 | { 78 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*83WgR51K6xgAAAAAAAAAAAAADrZ5AQ/original', 79 | name: 'Foursquare Studio', 80 | en_name: 'Foursquare Studio', 81 | description: 'Foursquare Studio 提供地理位置数据的可视化和分析工具。', 82 | en_description: 83 | 'Foursquare Studio offers tools for the visualization and analysis of location data.', 84 | site_url: 'https://studio.foursquare.com/home', 85 | order: 17, 86 | tags: ['Location Data', 'Data Visualization', 'Analysis'] 87 | }, 88 | { 89 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*j48OTLE2f4AAAAAAAAAAAAAADrZ5AQ/original', 90 | name: 'ColorBrewer', 91 | en_name: 'ColorBrewer', 92 | description: '地图配色', 93 | en_description: 'Map color', 94 | site_url: 'https://colorbrewer2.org/', 95 | order: 2, 96 | tags: ['GIS', 'Web', 'Data'] 97 | }, 98 | { 99 | icon: 'https://maptable.com/favicon.ico', 100 | name: 'Maptable', 101 | en_name: 'Maptable', 102 | description: '空间数据协同工具', 103 | en_description: 'Spatial data collaboration tools', 104 | site_url: 'https://maptable.com/zh-cn/', 105 | order: 2, 106 | tags: ['GIS', 'Web', 'Data'] 107 | }, 108 | { 109 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*yWzeTLsK8cQAAAAAAAAAAAAADrZ5AQ/original', 110 | name: 'Felt', 111 | en_name: 'Felt', 112 | description: '地图制图分享', 113 | en_description: 'Fast, flexible maps to grow your business', 114 | site_url: 'https://felt.com', 115 | order: 1, 116 | tags: ['Crafts', 'Marketplace', 'Handmade'] 117 | }, 118 | { 119 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*8nBdR6HWreoAAAAAAAAAAAAADrZ5AQ/original', 120 | name: 'Scribble Maps', 121 | en_name: 'Scribble Maps', 122 | description: 123 | 'Create custom maps with scribbles, shapes, and more with this online mapping tool.', 124 | en_description: 125 | 'Create custom maps with scribbles, shapes, and more with this online mapping tool.', 126 | site_url: 'https://www.scribblemaps.com/', 127 | order: 26, 128 | tags: ['Custom Maps', 'Mapping Tool', 'Online Maps'] 129 | } 130 | ] 131 | } 132 | -------------------------------------------------------------------------------- /src/data/sites/data/groups/sharing_station.ts: -------------------------------------------------------------------------------- 1 | import { IGroup } from '../../../types' 2 | 3 | export const SharingStation: IGroup = { 4 | icon: 'icon-ditupeise', 5 | name: '综合分享站', 6 | en_name: 'Sharing station', 7 | order: 2, 8 | children: [ 9 | { 10 | icon: '', 11 | name: '地理空间数据云', 12 | en_name: 'Geospatial Cloud', 13 | description: 14 | '数据资源更新比较稳定,免费数据包括Landsat系列、中巴资源卫星、MODIS数据的各种产品、DEM数字高程数据、EO-1数据、NOAAA VHRR数据产品、Sentinel数据等。账号注册,通过审核直接下载即可。', 15 | en_description: 16 | 'Stable data resource updates, including free data such as Landsat series, China-Pakistan Resource Satellite, various products of MODIS data, DEM digital elevation data, EO-1 data, NOAA VHRR data products, Sentinel data, etc. Account registration allows direct download upon approval.', 17 | site_url: 'http://www.gscloud.cn/sources', 18 | tags: ['Remote Sensing', 'Satellite', 'Earth Observation'] 19 | }, 20 | 21 | { 22 | icon: 'http://www.geodata.cn/res/images/favicon.png', 23 | name: '国家地球系统科学数据中心共享服务平台', 24 | en_name: 25 | 'National Earth System Science Data Center Shared Service Platform', 26 | description: 27 | '包含各学科数据,整合集成分布在国内外数据中心群、高等院校、科研院所以及科学家个人产生的数据资源。账号注册,直接下载即可。', 28 | en_description: 29 | 'It includes data from various disciplines, integrating and distributing data resources produced by domestic and foreign data center groups, universities, research institutes, and individual scientists. Direct download available upon account registration.', 30 | site_url: 'http://www.geodata.cn/data/publisher.html', 31 | order: 2, 32 | tags: ['Earth System Science', 'Data Center', 'Data Sharing'] 33 | }, 34 | { 35 | icon: 'https://chinageoss.cn/favicon.ico', 36 | name: '国家综合地球观测数据共享平台', 37 | en_name: 'China GEOSS Data Sharing Platform', 38 | description: 39 | '国内卫星数据:资源、高分、气象、海洋、环境、快舟、北京一号等。国外卫星数据:Landsat系列、MODIS、EO-1、IRS-P6、ENVISAT-1、ERS-2、RESOURCESAT-1。大部分数据可共享下载。', 40 | en_description: 41 | 'Domestic satellite data: Ziyuan, High-Resolution, Meteorological, Ocean, Environmental, Kuaizhou, Beijing-1, etc. Foreign satellite data: Landsat series, MODIS, EO-1, IRS-P6, ENVISAT-1, ERS-2, RESOURCESAT-1. Most data can be shared and downloaded.', 42 | site_url: 'https://chinageoss.cn/', 43 | tags: ['Satellite Data', 'Earth Observation', 'Geoscience'] 44 | }, 45 | { 46 | icon: 'http://www.dsac.cn/Content/img/logo_head.png', 47 | 48 | name: '地理监测云平台', 49 | en_name: 'Geographical National Conditions Monitoring Cloud Platform', 50 | description: 51 | '云平台主要包含两部分——时空数据平台和数值模拟研究平台,特别是在现已建成的生态环境科学模型库的基础上,发展了数值模拟相关的工具库,并与时空数据平台进行集成,形成了具有国内领先水平的生态环境科学数值研究环境。针对研究、规划、政策制定及决策等不同需求提供科学可靠的空间信息定制产品和系统解决方案,满足从个人用户到国家政府部门的各级用户需求。部分数据免费。', 52 | en_description: 53 | 'The cloud platform mainly includes two parts: the spatiotemporal data platform and the numerical simulation research platform. It has developed a numerical simulation-related tool library based on the existing ecological environment science model library and integrated it with the spatiotemporal data platform, forming a domestically leading ecological environment science numerical research environment. It provides scientific and reliable spatial information customized products and system solutions for different needs such as research, planning, policy formulation, and decision-making, meeting the needs of users at all levels from individuals to national government departments. Some data is free.', 54 | site_url: 'http://www.dsac.cn/', 55 | order: 4, 56 | tags: [ 57 | 'Geospatial Data', 58 | 'Numerical Simulation', 59 | 'Ecological Environment' 60 | ] 61 | }, 62 | { 63 | icon: 'https://resourcewatch.org/favicon.ico', 64 | name: '全球资源观察', 65 | en_name: 'Global Resource Watch', 66 | description: '世界资源研究所主办的动态数据集发布平台', 67 | en_description: 68 | 'Resource Watch provides trusted and timely data for a sustainable future.', 69 | site_url: 'https://resourcewatch.org/data/explore', 70 | order: 4, 71 | tags: ['Geospatial Data', 'Ecological Environment'] 72 | }, 73 | { 74 | icon: 'http://www.data.ac.cn/favicon.ico', 75 | name: '资源学科创新平台', 76 | en_name: 'Resource Science Innovation Platform', 77 | description: 78 | '资源学科创新平台是面向人地系统基础研究、国家经济建设和国家战略需求的数据库服务系统。以人口、资源、环境和发展(PRED)为核心,平台功能丰富,使用简单、方便。', 79 | en_description: 80 | 'The Resource Science Innovation Platform is a database service system oriented towards fundamental research in human-land systems, national economic development, and strategic national needs. With a core focus on population, resources, environment, and development (PRED), the platform offers rich functionality and is user-friendly.', 81 | site_url: 'http://www.data.ac.cn/', 82 | order: 4, 83 | tags: ['Resource Science', 'Innovation Platform', 'Data Services'] 84 | }, 85 | { 86 | icon: 'https://worldmap.maps.arcgis.com/favicon.ico', 87 | name: '哈佛大学世界地图', 88 | en_name: 'Harvard World Map', 89 | description: 90 | '哈佛大学世界地图提供多种数据类型,包括交通网络(含高铁、高速、机场等)、宗教信仰分布、人口密度图、能源图、教育分布、环境(水质、空气质量、CO2、PM2.5等)。', 91 | en_description: 92 | 'The Harvard World Map provides various types of data, including transportation networks (including high-speed rail, highways, airports), religious beliefs distribution, population density maps, energy maps, education distribution, and environmental data (water quality, air quality, CO2, PM2.5, etc.).', 93 | site_url: 'https://worldmap.maps.arcgis.com/home/index.html', 94 | order: 5, 95 | tags: [ 96 | 'Geospatial Data', 97 | 'Transportation Network', 98 | 'Religious Distribution', 99 | 'Population Density', 100 | 'Energy Map', 101 | 'Education Distribution', 102 | 'Environmental Data' 103 | ] 104 | } 105 | ] 106 | } 107 | -------------------------------------------------------------------------------- /src/data/sites/tech/groups/3d_applications.ts: -------------------------------------------------------------------------------- 1 | import { IGroup } from '../../../types' 2 | export const Application3D: IGroup = { 3 | icon: 'icon-a-3d', 4 | name: '3D 应用', 5 | en_name: '3D Applications', 6 | order: 5, 7 | children: [ 8 | { 9 | icon: 'http://www.esri.com/favicon.ico', 10 | name: 'ArcGIS Earth', 11 | en_name: 'ArcGIS Earth', 12 | description: 13 | '探索世界任何地方。使用各种3D和2D地图数据格式,包括KML。显示数据,勾画地标,测量和进行交互式分析,并添加注释。', 14 | en_description: 15 | 'Explore any part of the world. Work with a variety of 3D and 2D map data formats, including KML. Display data, sketch placemarks, measure and perform interactive analysis, and add annotations.', 16 | site_url: 'http://www.esri.com/software/arcgis-earth', 17 | order: 75, 18 | tags: ['3D Exploration', '2D Maps', 'KML', 'Interactive Analysis'] 19 | }, 20 | { 21 | icon: 'http://www.esri.com/favicon.ico', 22 | name: 'CityEngine', 23 | en_name: 'CityEngine', 24 | description: '先进的3D建模软件。', 25 | en_description: 'Advanced 3D modeling software.', 26 | site_url: 'http://www.esri.com/software/cityengine/', 27 | order: 76, 28 | tags: ['3D Modeling', 'Software'] 29 | }, 30 | { 31 | icon: 'https://elevationapi.com/favicon.ico', 32 | name: 'DEM Net Elevation API', 33 | en_name: 'DEM Net Elevation API', 34 | description: 35 | '在线生成来自开放数据(DEM、OSM)和图像的3D地形模型,可导出到STL和glTF。', 36 | en_description: 37 | '3D terrain model generation online from open data (DEM, OSM) and imagery, exports to STL and glTF.', 38 | site_url: 'https://elevationapi.com', 39 | order: 77, 40 | tags: ['3D Terrain', 'DEM', 'STL', 'glTF'] 41 | }, 42 | { 43 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 44 | name: 'Earth Enterprise', 45 | en_name: 'Earth Enterprise', 46 | description: 47 | 'Google Earth Enterprise的开源版本,是一个地理空间应用程序,可以构建和托管自定义的3D地球仪和2D地图。', 48 | en_description: 49 | 'The open source release of Google Earth Enterprise, a geospatial application providing the ability to build and host custom 3D globes and 2D maps.', 50 | site_url: 'https://github.com/google/earthenterprise', 51 | order: 78, 52 | tags: ['Open Source', '3D Globes', 'Geospatial Application'] 53 | }, 54 | { 55 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*TrBASa3dWpkAAAAAAAAAAAAADrZ5AQ/original', 56 | name: 'Google Earth', 57 | en_name: 'Google Earth', 58 | description: 59 | '这是一款基于卫星图像渲染地球的计算机程序,提供3D地球的视觉呈现。', 60 | en_description: 61 | 'A computer program that renders a 3D representation of Earth based on satellite imagery.', 62 | site_url: 'http://earth.google.com/', 63 | order: 79, 64 | tags: ['3D Representation', 'Satellite Imagery', 'Maps'] 65 | }, 66 | { 67 | icon: 'https://mdn.alipayobjects.com/huamei_gjo0cl/afts/img/A*xynuQp6nSv0AAAAAAAAAAAAADjDHAQ/original', 68 | name: 'Skyline', 69 | en_name: 'Skyline', 70 | description: 71 | '3D桌面和基于Web的应用程序,使企业能够构建、编辑、导航、查询和分析逼真的3D环境。', 72 | en_description: 73 | '3D desktop and web-based applications enabling an enterprise to build, edit, navigate, query, and analyze realistic 3D environments.', 74 | site_url: 75 | 'http://www.skylineglobe.com/SkylineGlobe/corporate/Default.aspx?', 76 | order: 80, 77 | tags: ['3D Applications', 'Web-Based', 'Geospatial Analysis'] 78 | }, 79 | { 80 | icon: 'https://worldwind.arc.nasa.gov/img/favicon.ico', 81 | name: 'World Wind', 82 | en_name: 'World Wind', 83 | description: 84 | '一种软件开发工具包(SDK),软件工程师可以使用它构建自己的应用程序。', 85 | en_description: 86 | 'An SDK (software development kit) that software engineers can use to build their own applications.', 87 | site_url: 'http://worldwind.arc.nasa.gov/java/', 88 | order: 81, 89 | tags: ['SDK', 'Software Development', 'Geospatial Applications'] 90 | }, 91 | { 92 | icon: 'http://www.esri.com/favicon.ico', 93 | name: 'ArcGIS Earth', 94 | en_name: 'ArcGIS Earth', 95 | description: 96 | '探索世界任何地方。使用各种3D和2D地图数据格式,包括KML。显示数据,勾画地标,测量和进行交互式分析,并添加注释。', 97 | en_description: 98 | 'Explore any part of the world. Work with a variety of 3D and 2D map data formats, including KML. Display data, sketch placemarks, measure and perform interactive analysis, and add annotations.', 99 | site_url: 'http://www.esri.com/software/arcgis-earth', 100 | order: 82, 101 | tags: ['3D Exploration', '2D Maps', 'KML', 'Interactive Analysis'] 102 | }, 103 | { 104 | icon: 'http://www.esri.com/favicon.ico', 105 | name: 'CityEngine', 106 | en_name: 'CityEngine', 107 | description: '先进的3D建模软件。', 108 | en_description: 'Advanced 3D modeling software.', 109 | site_url: 'http://www.esri.com/software/cityengine/', 110 | order: 83, 111 | tags: ['3D Modeling', 'Software'] 112 | }, 113 | { 114 | icon: 'https://elevationapi.com/favicon.ico', 115 | name: 'DEM Net Elevation API', 116 | en_name: 'DEM Net Elevation API', 117 | description: 118 | '在线生成来自开放数据(DEM、OSM)和图像的3D地形模型,可导出到STL和glTF。', 119 | en_description: 120 | '3D terrain model generation online from open data (DEM, OSM) and imagery, exports to STL and glTF.', 121 | site_url: 'https://elevationapi.com', 122 | order: 84, 123 | tags: ['3D Terrain', 'DEM', 'STL', 'glTF'] 124 | }, 125 | { 126 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 127 | name: 'Earth Enterprise', 128 | en_name: 'Earth Enterprise', 129 | description: 130 | 'Google Earth Enterprise的开源版本,是一个地理空间应用程序,可以构建和托管自定义的3D地球仪和2D地图。', 131 | en_description: 132 | 'The open source release of Google Earth Enterprise, a geospatial application providing the ability to build and host custom 3D globes and 2D maps.', 133 | site_url: 'https://github.com/google/earthenterprise', 134 | order: 85, 135 | tags: ['Open Source', '3D Globes', 'Geospatial Application'] 136 | } 137 | ] 138 | } 139 | -------------------------------------------------------------------------------- /src/data/sites/tech/groups/geospatial_library/php.ts: -------------------------------------------------------------------------------- 1 | import { IGroup } from '../../../../types' 2 | export const PHP: IGroup = { 3 | icon: 'icon-PHPkaifa', 4 | name: 'PHP', 5 | en_name: 'PHP', 6 | order: 5, 7 | children: [ 8 | { 9 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 10 | name: 'FreeGeoDB', 11 | en_name: 'FreeGeoDB', 12 | description: 13 | 'Free database of geographic place names and corresponding geospatial data.', 14 | en_description: 15 | 'Free database of geographic place names and corresponding geospatial data.', 16 | site_url: 'https://github.com/delight-im/FreeGeoDB', 17 | order: 164, 18 | tags: ['FreeGeoDB', 'Geographic Place Names', 'Geospatial Data'] 19 | }, 20 | { 21 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 22 | name: 'geojson', 23 | en_name: 'geojson', 24 | description: 'GeoJSON implementation for PHP.', 25 | en_description: 'GeoJSON implementation for PHP.', 26 | site_url: 'https://github.com/jmikola/geojson', 27 | order: 165, 28 | tags: ['GeoJSON', 'PHP'] 29 | }, 30 | { 31 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 32 | name: 'GeoPHP', 33 | en_name: 'GeoPHP', 34 | description: 'Advanced geometry operations in PHP.', 35 | en_description: 'Advanced geometry operations in PHP.', 36 | site_url: 'https://geophp.net/', 37 | order: 166, 38 | tags: ['GeoPHP', 'Geometry Operations', 'PHP'] 39 | }, 40 | { 41 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 42 | name: 'geospatial', 43 | en_name: 'geospatial', 44 | description: 'PHP Extension to handle common geospatial functions.', 45 | en_description: 'PHP Extension to handle common geospatial functions.', 46 | site_url: 'https://github.com/php-geospatial/geospatial', 47 | order: 167, 48 | tags: ['Geospatial', 'PHP Extension'] 49 | }, 50 | { 51 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 52 | name: 'laragis', 53 | en_name: 'laragis', 54 | description: 'A standalone Geo/GIS Provider for Laravel.', 55 | en_description: 'A standalone Geo/GIS Provider for Laravel.', 56 | site_url: 'https://github.com/ralphschindler/laragis', 57 | order: 168, 58 | tags: ['Laravel', 'GIS', 'Laragis'] 59 | }, 60 | { 61 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 62 | name: 'laravel-geo', 63 | en_name: 'laravel-geo', 64 | description: 65 | 'GeoSpatial integration on Laravel 5.2+ that supports MySQL and PostgreSQL.', 66 | en_description: 67 | 'GeoSpatial integration on Laravel 5.2+ that supports MySQL and PostgreSQL.', 68 | site_url: 'https://github.com/eleven-lab/laravel-geo', 69 | order: 169, 70 | tags: ['Laravel', 'GeoSpatial Integration'] 71 | }, 72 | { 73 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 74 | name: 'Laravel Magellan', 75 | en_name: 'Laravel Magellan', 76 | description: 77 | 'A modern PostGIS integration for Laravel 9+, including parsers and generators.', 78 | en_description: 79 | 'A modern PostGIS integration for Laravel 9+, including parsers and generators.', 80 | site_url: 'https://github.com/clickbar/laravel-magellan', 81 | order: 170, 82 | tags: ['Laravel', 'PostGIS', 'Magellan'] 83 | }, 84 | { 85 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 86 | name: 'li3_geo', 87 | en_name: 'li3_geo', 88 | description: 89 | 'Adds geospatial support to Lithium for multiple databases, including MongoDB, CouchDB and MySQL.', 90 | en_description: 91 | 'Adds geospatial support to Lithium for multiple databases, including MongoDB, CouchDB and MySQL.', 92 | site_url: 'https://github.com/nateabele/li3_geo', 93 | order: 171, 94 | tags: ['Lithium', 'GeoSpatial Support'] 95 | }, 96 | { 97 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 98 | name: 'PHP7 Mapnik', 99 | en_name: 'PHP7 Mapnik', 100 | description: 'PHP extension for geospatial rendering with Mapnik.', 101 | en_description: 'PHP extension for geospatial rendering with Mapnik.', 102 | site_url: 'https://github.com/garrettrayj/php7-mapnik', 103 | order: 172, 104 | tags: ['PHP7', 'Mapnik', 'Geospatial Rendering'] 105 | }, 106 | { 107 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 108 | name: 'php-libspatialite', 109 | en_name: 'php-libspatialite', 110 | description: 111 | 'PHP Query Builder for SQLite data with Spatial SQL Capabilities.', 112 | en_description: 113 | 'PHP Query Builder for SQLite data with Spatial SQL Capabilities.', 114 | site_url: 'https://github.com/rukandax/php-libspatialite', 115 | order: 173, 116 | tags: ['PHP', 'SQLite', 'Spatial SQL'] 117 | }, 118 | { 119 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 120 | name: 'shapefile', 121 | en_name: 'shapefile', 122 | description: 'ESRI ShapeFile library for PHP.', 123 | en_description: 'ESRI ShapeFile library for PHP.', 124 | site_url: 'https://github.com/phpmyadmin/shapefile', 125 | order: 174, 126 | tags: ['ESRI', 'ShapeFile', 'PHP'] 127 | }, 128 | { 129 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 130 | name: 'ShapeReader', 131 | en_name: 'ShapeReader', 132 | description: 'A PHP library to parse ESRI Shape files.', 133 | en_description: 'A PHP library to parse ESRI Shape files.', 134 | site_url: 'https://github.com/muka/ShapeReader', 135 | order: 175, 136 | tags: ['ESRI', 'Shape Files', 'PHP'] 137 | } 138 | ] 139 | } 140 | -------------------------------------------------------------------------------- /src/data/sites/tech/groups/rs_software.ts: -------------------------------------------------------------------------------- 1 | import { IGroup } from '../../../types' 2 | export const RSSoftWare: IGroup = { 3 | icon: 'icon-yaogancehui1', 4 | name: '遥感软件', 5 | en_name: 'Remote Sensing Software', 6 | order: 5, 7 | children: [ 8 | { 9 | icon: 'https://mdn.alipayobjects.com/huamei_gjo0cl/afts/img/A*KACdTYozmn0AAAAAAAAAAAAADjDHAQ/original', 10 | name: 'eCognition', 11 | en_name: 'eCognition', 12 | description: 13 | 'A powerful development environment for object-based image analysis.', 14 | en_description: 15 | 'A powerful development environment for object-based image analysis.', 16 | site_url: 'http://www.ecognition.com/suite/ecognition-developer', 17 | order: 53, 18 | tags: ['Image Analysis', 'Remote Sensing', 'Object-based Analysis'] 19 | }, 20 | { 21 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*38inQ7A2iPkAAAAAAAAAAAAADrZ5AQ/original', 22 | name: 'ENVI', 23 | en_name: 'ENVI', 24 | description: 'Geospatial imagery analysis and processing software.', 25 | en_description: 'Geospatial imagery analysis and processing software.', 26 | site_url: 'https://www.harris.com/solution/envi', 27 | order: 54, 28 | tags: ['Geospatial Imagery', 'Image Analysis', 'Remote Sensing'] 29 | }, 30 | { 31 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*TrBASa3dWpkAAAAAAAAAAAAADrZ5AQ/original', 32 | name: 'ERDAS IMAGINE', 33 | en_name: 'ERDAS IMAGINE', 34 | description: 'Geospatial imagery analysis and processing software.', 35 | en_description: 'Geospatial imagery analysis and processing software.', 36 | site_url: 37 | 'https://www.hexagongeospatial.com/products/power-portfolio/erdas-imagine', 38 | order: 55, 39 | tags: ['Geospatial Imagery', 'Image Analysis', 'Remote Sensing'] 40 | }, 41 | { 42 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*TrBASa3dWpkAAAAAAAAAAAAADrZ5AQ/original', 43 | name: 'Google Earth', 44 | en_name: 'Google Earth', 45 | description: 46 | 'A computer program that renders a 3D representation of Earth based on satellite imagery.', 47 | en_description: 48 | 'A computer program that renders a 3D representation of Earth based on satellite imagery.', 49 | site_url: 'https://www.google.com/earth/', 50 | order: 56, 51 | tags: ['3D Representation', 'Satellite Imagery'] 52 | }, 53 | { 54 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*TrBASa3dWpkAAAAAAAAAAAAADrZ5AQ/original', 55 | name: 'Google Earth Studio', 56 | en_name: 'Google Earth Studio', 57 | description: 58 | 'An animation tool for Google Earth’s satellite and 3D imagery.', 59 | en_description: 60 | 'An animation tool for Google Earth’s satellite and 3D imagery.', 61 | site_url: 'https://www.google.com/earth/studio/', 62 | order: 57, 63 | tags: ['Animation', 'Satellite Imagery', '3D Imagery'] 64 | }, 65 | { 66 | icon: 'https://mdn.alipayobjects.com/huamei_gjo0cl/afts/img/A*JGrmS4HBS7kAAAAAAAAAAAAADjDHAQ/original', 67 | name: 'GRASS GIS', 68 | en_name: 'GRASS GIS', 69 | description: 70 | 'A free and open source GIS software suite used for geospatial data management and analysis, image processing, graphics and maps production, spatial modeling, and visualization.', 71 | en_description: 72 | 'A free and open source GIS software suite used for geospatial data management and analysis, image processing, graphics and maps production, spatial modeling, and visualization.', 73 | site_url: 'https://grass.osgeo.org/', 74 | order: 58, 75 | tags: ['GIS', 'Open Source', 'Geospatial Data'] 76 | }, 77 | { 78 | icon: '', 79 | name: 'Opticks', 80 | en_name: 'Opticks', 81 | description: 82 | 'An expandable remote sensing and imagery analysis software platform that is free and open source.', 83 | en_description: 84 | 'An expandable remote sensing and imagery analysis software platform that is free and open source.', 85 | site_url: 'https://opticks.org/', 86 | order: 59, 87 | tags: ['Remote Sensing', 'Imagery Analysis', 'Open Source'] 88 | }, 89 | { 90 | icon: 'https://mdn.alipayobjects.com/huamei_gjo0cl/afts/img/A*c394T4_DVG4AAAAAAAAAAAAADjDHAQ/original', 91 | name: 'Orfeo toolbox', 92 | en_name: 'Orfeo toolbox', 93 | description: 94 | 'An open-source project for state-of-the-art remote sensing, including a fast image viewer, apps callable from Bash, Python or QGIS, and a powerful C++ API.', 95 | en_description: 96 | 'An open-source project for state-of-the-art remote sensing, including a fast image viewer, apps callable from Bash, Python or QGIS, and a powerful C++ API.', 97 | site_url: 'https://www.orfeo-toolbox.org/', 98 | order: 60, 99 | tags: ['Remote Sensing', 'Imagery Analysis', 'Open Source'] 100 | }, 101 | { 102 | icon: 'https://search.earthdata.nasa.gov/favicon.ico?v=1.1', 103 | name: 'PANOPLY', 104 | en_name: 'PANOPLY', 105 | description: 106 | 'Panoply plots geo-referenced and other arrays from netCDF, HDF, GRIB, and other datasets.', 107 | en_description: 108 | 'Panoply plots geo-referenced and other arrays from netCDF, HDF, GRIB, and other datasets.', 109 | site_url: 'https://www.giss.nasa.gov/tools/panoply/', 110 | order: 61, 111 | tags: ['Data Visualization', 'netCDF', 'GRIB'] 112 | }, 113 | { 114 | icon: '', 115 | name: 'PCI Geomatica', 116 | en_name: 'PCI Geomatica', 117 | description: 118 | 'A remote sensing desktop software package for processing earth observation data.', 119 | en_description: 120 | 'A remote sensing desktop software package for processing earth observation data.', 121 | site_url: 'http://www.pcigeomatics.com/software/geomatica/professional', 122 | order: 62, 123 | tags: ['Remote Sensing', 'Geomatics', 'Earth Observation'] 124 | }, 125 | { 126 | icon: 'https://mdn.alipayobjects.com/huamei_gjo0cl/afts/img/A*3R7zT5fCygUAAAAAAAAAAAAADjDHAQ/original', 127 | name: 'SNAP', 128 | en_name: 'SNAP', 129 | description: 'A common architecture for all Sentinel Toolboxes.', 130 | en_description: 'A common architecture for all Sentinel Toolboxes.', 131 | site_url: 'http://step.esa.int/main/toolboxes/snap/', 132 | order: 63, 133 | tags: ['Remote Sensing', 'Sentinel Data', 'Data Processing'] 134 | } 135 | ] 136 | } 137 | -------------------------------------------------------------------------------- /src/data/sites/tech/groups/geospatial_library/ruby.ts: -------------------------------------------------------------------------------- 1 | import { IGroup } from '../../../../types' 2 | export const Ruby: IGroup = { 3 | icon: 'icon-Rubyyuyan', 4 | name: 'Ruby', 5 | en_name: 'Ruby', 6 | order: 5, 7 | children: [ 8 | { 9 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 10 | name: 'Agroclimatology', 11 | en_name: 'Agroclimatology', 12 | description: 13 | 'Ruby client for interacting with the NASA (POWER) Agroclimatology Web Resource.', 14 | en_description: 15 | 'Ruby client for interacting with the NASA (POWER) Agroclimatology Web Resource.', 16 | site_url: 'https://github.com/beaorn/agroclimatology', 17 | order: 134, 18 | tags: ['Ruby', 'NASA', 'Agroclimatology'] 19 | }, 20 | { 21 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 22 | name: 'Evapotranspiration', 23 | en_name: 'Evapotranspiration', 24 | description: 25 | 'Ruby library for calculating reference crop evapotranspiration (ETo)', 26 | en_description: 27 | 'Ruby library for calculating reference crop evapotranspiration (ETo)', 28 | site_url: 'https://github.com/beaorn/evapotranspiration', 29 | order: 135, 30 | tags: ['Ruby', 'Evapotranspiration'] 31 | }, 32 | { 33 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 34 | name: 'ffi-geos', 35 | en_name: 'ffi-geos', 36 | description: 'Low-level ruby bindings to GEOS library.', 37 | en_description: 'Low-level ruby bindings to GEOS library.', 38 | site_url: 'https://github.com/dark-panda/ffi-geos', 39 | order: 136, 40 | tags: ['Ruby', 'GEOS'] 41 | }, 42 | { 43 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 44 | name: 'Geokit', 45 | en_name: 'Geokit', 46 | description: 47 | 'A Ruby gem & Rails plugin for easier map-based applications.', 48 | en_description: 49 | 'A Ruby gem & Rails plugin for easier map-based applications.', 50 | site_url: 'http://geokit.rubyforge.org/', 51 | order: 137, 52 | tags: ['Ruby', 'Rails', 'Mapping'] 53 | }, 54 | { 55 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 56 | name: 'Mongoid Geospatial', 57 | en_name: 'Mongoid Geospatial', 58 | description: 59 | 'A Mongoid Extension that simplifies the use of MongoDB spatial features.', 60 | en_description: 61 | 'A Mongoid Extension that simplifies the use of MongoDB spatial features.', 62 | site_url: 'https://github.com/nofxx/mongoid-geospatial', 63 | order: 138, 64 | tags: ['Mongoid', 'MongoDB', 'Spatial'] 65 | }, 66 | { 67 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 68 | name: 'PostGIS ActiveRecord Adapter', 69 | en_name: 'PostGIS ActiveRecord Adapter', 70 | description: 'ActiveRecord adapter for PostGIS.', 71 | en_description: 'ActiveRecord adapter for PostGIS.', 72 | site_url: 'https://github.com/rgeo/activerecord-postgis-adapter', 73 | order: 139, 74 | tags: ['PostGIS', 'ActiveRecord'] 75 | }, 76 | { 77 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 78 | name: 'Rgeo', 79 | en_name: 'Rgeo', 80 | description: 81 | "RGeo is a geospatial data library for Ruby. It provides an implementation of the Open Geospatial Consortium's Simple Features Specification", 82 | en_description: 83 | "RGeo is a geospatial data library for Ruby. It provides an implementation of the Open Geospatial Consortium's Simple Features Specification", 84 | site_url: 'https://github.com/rgeo/rgeo', 85 | order: 140, 86 | tags: ['Ruby', 'Geospatial'] 87 | }, 88 | { 89 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 90 | name: 'Rgeo GeoJSON', 91 | en_name: 'Rgeo GeoJSON', 92 | description: 'RGeo component for reading and writing GeoJSON.', 93 | en_description: 'RGeo component for reading and writing GeoJSON.', 94 | site_url: 'https://github.com/rgeo/rgeo-geojson', 95 | order: 141, 96 | tags: ['RGeo', 'GeoJSON'] 97 | }, 98 | { 99 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 100 | name: 'Rgeo Shapefile', 101 | en_name: 'Rgeo Shapefile', 102 | description: 103 | 'Optional module for RGeo for reading geospatial data from ESRI shapefiles.', 104 | en_description: 105 | 'Optional module for RGeo for reading geospatial data from ESRI shapefiles.', 106 | site_url: 'https://github.com/rgeo/rgeo-shapefile', 107 | order: 142, 108 | tags: ['RGeo', 'Shapefiles'] 109 | }, 110 | { 111 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 112 | name: 'Ruby Geocoder', 113 | en_name: 'Ruby Geocoder', 114 | description: 'Integration with geocoding services.', 115 | en_description: 'Integration with geocoding services.', 116 | site_url: 'http://www.rubygeocoder.com/', 117 | order: 143, 118 | tags: ['Ruby', 'Geocoding'] 119 | }, 120 | { 121 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 122 | name: 'ruby_postal', 123 | en_name: 'ruby_postal', 124 | description: 125 | 'Ruby bindings to libpostal for fast international address parsing/normalization.', 126 | en_description: 127 | 'Ruby bindings to libpostal for fast international address parsing/normalization.', 128 | site_url: 'https://github.com/openvenues/ruby_postal', 129 | order: 144, 130 | tags: ['Ruby', 'libpostal'] 131 | }, 132 | { 133 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 134 | name: 'SpatiaLite ActiveRecord Adapter', 135 | en_name: 'SpatiaLite ActiveRecord Adapter', 136 | description: 'ActiveRecord adapter for Spatialite.', 137 | en_description: 'ActiveRecord adapter for Spatialite.', 138 | site_url: 'https://github.com/rgeo/activerecord-spatialite-adapter', 139 | order: 145, 140 | tags: ['SpatiaLite', 'ActiveRecord'] 141 | } 142 | ] 143 | } 144 | -------------------------------------------------------------------------------- /src/data/sites/tech/groups/3d_tiles.ts: -------------------------------------------------------------------------------- 1 | import { IGroup } from '../../../types' 2 | export const Tiles3D: IGroup = { 3 | icon: 'icon-a-3d', 4 | name: '3D瓦片', 5 | en_name: '3DTiles', 6 | order: 4, 7 | children: [ 8 | { 9 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*mvMlQquWXgMAAAAAAAAAAAAADrZ5AQ/original', 10 | name: 'CesiumJS', 11 | en_name: 'CesiumJS', 12 | description: 13 | '用于在 web 浏览器中创建 3D 球体和 2D 地图的 JavaScript 库。', 14 | en_description: 15 | 'JavaScript library for creating 3D globes and 2D maps in a web browser.', 16 | site_url: 'https://github.com/CesiumGS/cesium', 17 | order: 71, 18 | tags: ['JavaScript', 'WebGL', '3D Globes', '2D Maps'] 19 | }, 20 | { 21 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 22 | name: '3DCityDB-Web-Map-Client', 23 | en_name: '3DCityDB-Web-Map-Client', 24 | description: '基于 Cesium 的 CityGML 和 3D Tiles 查看器。', 25 | en_description: 'Cesium based Viewer for CityGML und 3D Tiles.', 26 | site_url: 'https://github.com/3dcitydb/3dcitydb-web-map', 27 | order: 72, 28 | tags: ['Cesium', 'CityGML', '3D Tiles'] 29 | }, 30 | { 31 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 32 | name: 'loaders.gl', 33 | en_name: 'loaders.gl', 34 | description: '用于许多主要 3D、地理空间和表格式的解析器和编码器。', 35 | en_description: 36 | 'Parsers and encoders for many major 3D, geospatial and tabular formats.', 37 | site_url: 'https://loaders.gl/docs/specifications/category-3d-tiles', 38 | order: 73, 39 | tags: ['3D Formats', 'Geospatial Data', 'WebGL'] 40 | }, 41 | { 42 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*BUiIRqsFAbYAAAAAAAAAAAAADrZ5AQ/original', 43 | name: 'deck.gl', 44 | en_name: 'deck.gl', 45 | description: 46 | '基于 WebGL 的框架,用于对大型数据集进行视觉探索性数据分析。', 47 | en_description: 48 | 'WebGL-powered framework for visual exploratory data analysis of large datasets.', 49 | site_url: 'https://deck.gl/docs/api-reference/geo-layers/tile-3d-layer', 50 | order: 74, 51 | tags: ['WebGL', 'Data Analysis', 'Geospatial Data'] 52 | }, 53 | { 54 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 55 | name: '3d-tiles-renderer', 56 | en_name: '3d-tiles-renderer', 57 | description: '基于 Three.js 的 3D Tiles 渲染器。', 58 | en_description: 'Three.js based renderer for 3D Tiles.', 59 | site_url: 'https://github.com/NASA-AMMOS/3DTilesRendererJS', 60 | order: 75, 61 | tags: ['Three.js', '3D Tiles', 'Rendering'] 62 | }, 63 | { 64 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 65 | name: 'three-loader-3dtiles', 66 | en_name: 'three-loader-3dtiles', 67 | description: 68 | '[Three.js](https://threejs.org/) 用于处理 OGC 3D Tiles 的加载程序模块。', 69 | en_description: 70 | '[Three.js](https://threejs.org/) loader module for handling OGC 3D Tiles.', 71 | site_url: 'https://github.com/nytimes/three-loader-3dtiles', 72 | order: 76, 73 | tags: ['Three.js', 'OGC 3D Tiles', 'Loader'] 74 | }, 75 | { 76 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 77 | name: 'threedtiles', 78 | en_name: 'threedtiles', 79 | description: 'three.js 的 3DTiles 查看器。', 80 | en_description: '3DTiles viewer for three.js.', 81 | site_url: 'https://github.com/ebeaufay/3DTilesViewer', 82 | order: 77, 83 | tags: ['Three.js', '3DTiles', 'Viewer'] 84 | }, 85 | { 86 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 87 | name: 'mapbox-3dtiles', 88 | en_name: 'mapbox-3dtiles', 89 | description: 'Mapbox GL JS 的 3D Tiles 自定义图层。', 90 | en_description: 'Mapbox GL JS custom layer for 3D Tiles.', 91 | site_url: 'https://github.com/Geodan/mapbox-3dtiles', 92 | order: 78, 93 | tags: ['Mapbox GL JS', '3D Tiles', 'Custom Layer'] 94 | }, 95 | { 96 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 97 | name: 'A-Frame component', 98 | en_name: 'A-Frame component', 99 | description: '[A-Frame](https://aframe.io/) 使用 3D-Tiles 的组件。', 100 | en_description: '[A-Frame](https://aframe.io/) component using 3D-Tiles.', 101 | site_url: 'https://github.com/nytimes/aframe-loader-3dtiles-component', 102 | order: 79, 103 | tags: ['A-Frame', '3D-Tiles', 'Component'] 104 | }, 105 | { 106 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 107 | name: 'iTowns', 108 | en_name: 'iTowns', 109 | description: '基于 Three.js 的 JS/WebGL 框架。', 110 | en_description: 'Three.js based JS/WebGL framework.', 111 | site_url: 'https://github.com/iTowns/itowns', 112 | order: 80, 113 | tags: ['Three.js', 'WebGL', 'JS Framework'] 114 | }, 115 | { 116 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*IVw2QL05J6oAAAAAAAAAAAAADrZ5AQ/original', 117 | name: 'giro3d', 118 | en_name: 'giro3d', 119 | description: '基于 Three.js 的 JS/WebGL 框架(iTown 的后继者)。', 120 | en_description: 'Three.js based JS/WebGL framework (successor of iTown).', 121 | site_url: 'https://gitlab.com/giro3d/giro3d', 122 | order: 81, 123 | tags: ['Three.js', 'WebGL', 'JS Framework'] 124 | }, 125 | { 126 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 127 | name: 'UD-Viz', 128 | en_name: 'UD-Viz', 129 | description: 130 | '城市数据可视化。用于创建可视化和与地理空间 3D 城市数据交互的 Web 应用程序的框架(基于 iTowns/Tree.js)。', 131 | en_description: 132 | 'Urban Data Vizualisation. Framework for creating web applications for visualizing and interacting with geospatial 3D urban data (based on iTowns/Tree.js).', 133 | site_url: 'https://github.com/VCityTeam/UD-Viz', 134 | order: 82, 135 | tags: [ 136 | 'Urban Data', 137 | 'Visualization', 138 | 'Web Application', 139 | 'Geospatial Data' 140 | ] 141 | }, 142 | { 143 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 144 | name: 'vsgCs', 145 | en_name: 'vsgCs', 146 | description: 147 | '用于在 Vulkan 场景图(VSG)应用程序中使用 3D Tiles 和其他地理空间内容的库。', 148 | en_description: 149 | 'a library for using 3D Tiles and other geospatial content within a Vulkan Scene Graph (VSG) application', 150 | site_url: 'https://github.com/timoore/vsgCs', 151 | order: 83, 152 | tags: ['Vulkan', 'Scene Graph', '3D Tiles'] 153 | } 154 | ] 155 | } 156 | -------------------------------------------------------------------------------- /src/data/sites/tech/groups/geospatial_library/rust.ts: -------------------------------------------------------------------------------- 1 | import { IGroup } from '../../../../types' 2 | export const Rust: IGroup = { 3 | icon: 'icon-Rustyuyan', 4 | name: 'Rust', 5 | en_name: 'Rust', 6 | order: 5, 7 | children: [ 8 | { 9 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*AovwR7a7TqkAAAAAAAAAAAAADrZ5AQ/original', 10 | name: 'Hecate', 11 | en_name: 'Hecate', 12 | description: 'Fast Geospatial Feature Storage API.', 13 | en_description: 'Fast Geospatial Feature Storage API.', 14 | site_url: 'https://github.com/mapbox/Hecate', 15 | order: 119, 16 | tags: ['Geospatial', 'API'] 17 | }, 18 | { 19 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 20 | name: 'Martin', 21 | en_name: 'Martin', 22 | description: 23 | 'Martin is a PostGIS vector tiles server suitable for large databases. Martin is written in Rust using Actix web framework.', 24 | en_description: 25 | 'Martin is a PostGIS vector tiles server suitable for large databases. Martin is written in Rust using Actix web framework.', 26 | site_url: 'https://github.com/urbica/martin', 27 | order: 120, 28 | tags: ['Rust', 'PostGIS', 'Vector Tiles'] 29 | }, 30 | { 31 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 32 | name: 'rust-gdal', 33 | en_name: 'rust-gdal', 34 | description: 'Rust bindings for GDAL.', 35 | en_description: 'Rust bindings for GDAL.', 36 | site_url: 'https://github.com/georust/rust-gdal', 37 | order: 121, 38 | tags: ['Rust', 'GDAL'] 39 | }, 40 | { 41 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 42 | name: 'rust-geo', 43 | en_name: 'rust-geo', 44 | description: 'Geospatial primitives and algorithms for Rust.', 45 | en_description: 'Geospatial primitives and algorithms for Rust.', 46 | site_url: 'https://github.com/georust/rust-geo', 47 | order: 122, 48 | tags: ['Rust', 'Geospatial'] 49 | }, 50 | { 51 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 52 | name: 'rust-geocoding', 53 | en_name: 'rust-geocoding', 54 | description: 'Geocoding library for Rust.', 55 | en_description: 'Geocoding library for Rust.', 56 | site_url: 'https://github.com/georust/rust-geocoding', 57 | order: 123, 58 | tags: ['Rust', 'Geocoding'] 59 | }, 60 | { 61 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 62 | name: 'rust-geohash', 63 | en_name: 'rust-geohash', 64 | description: 'Geohash for Rust.', 65 | en_description: 'Geohash for Rust.', 66 | site_url: 'https://github.com/georust/rust-geohash', 67 | order: 124, 68 | tags: ['Rust', 'Geohash'] 69 | }, 70 | { 71 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 72 | name: 'rust-geojson', 73 | en_name: 'rust-geojson', 74 | description: 75 | 'Library for serializing the GeoJSON vector GIS file format.', 76 | en_description: 77 | 'Library for serializing the GeoJSON vector GIS file format.', 78 | site_url: 'https://github.com/georust/rust-geojson', 79 | order: 125, 80 | tags: ['Rust', 'GeoJSON'] 81 | }, 82 | { 83 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 84 | name: 'rust-gpx', 85 | en_name: 'rust-gpx', 86 | description: 'Rust read/write support for GPS Exchange Format (GPX).', 87 | en_description: 'Rust read/write support for GPS Exchange Format (GPX).', 88 | site_url: 'https://github.com/georust/rust-gpx', 89 | order: 126, 90 | tags: ['Rust', 'GPX'] 91 | }, 92 | { 93 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 94 | name: 'rust-osm', 95 | en_name: 'rust-osm', 96 | description: 'OSM XML serialization and other OpenStreetMap utilities.', 97 | en_description: 98 | 'OSM XML serialization and other OpenStreetMap utilities.', 99 | site_url: 'https://github.com/georust/rust-osm', 100 | order: 127, 101 | tags: ['Rust', 'OpenStreetMap'] 102 | }, 103 | { 104 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 105 | name: 'rust-polyline', 106 | en_name: 'rust-polyline', 107 | description: 'Google Encoded Polyline encoding & decoding in Rust.', 108 | en_description: 'Google Encoded Polyline encoding & decoding in Rust.', 109 | site_url: 'https://github.com/georust/rust-polyline', 110 | order: 128, 111 | tags: ['Rust', 'Polyline'] 112 | }, 113 | { 114 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 115 | name: 'rust-proj', 116 | en_name: 'rust-proj', 117 | description: 'Rust bindings for Proj.', 118 | en_description: 'Rust bindings for Proj.', 119 | site_url: 'https://github.com/georust/rust-proj', 120 | order: 129, 121 | tags: ['Rust', 'Proj'] 122 | }, 123 | { 124 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 125 | name: 'rust-shapefile', 126 | en_name: 'rust-shapefile', 127 | description: 'Rust read/write support for shapefiles.', 128 | en_description: 'Rust read/write support for shapefiles.', 129 | site_url: 'https://github.com/georust/rust-shapefile', 130 | order: 130, 131 | tags: ['Rust', 'Shapefiles'] 132 | }, 133 | { 134 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 135 | name: 'rust-topojson', 136 | en_name: 'rust-topojson', 137 | description: 'TopoJSON bindings and utilities for Rust.', 138 | en_description: 'TopoJSON bindings and utilities for Rust.', 139 | site_url: 'https://github.com/georust/rust-topojson', 140 | order: 131, 141 | tags: ['Rust', 'TopoJSON'] 142 | }, 143 | { 144 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 145 | name: 'rust-wkt', 146 | en_name: 'rust-wkt', 147 | description: 'Rust read/write support for well-known text (WKT).', 148 | en_description: 'Rust read/write support for well-known text (WKT).', 149 | site_url: 'https://github.com/georust/rust-wkt', 150 | order: 132, 151 | tags: ['Rust', 'WKT'] 152 | }, 153 | { 154 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 155 | name: 'WhiteboxTools', 156 | en_name: 'WhiteboxTools', 157 | description: 'An advanced geospatial data analysis platform.', 158 | en_description: 'An advanced geospatial data analysis platform.', 159 | site_url: 'https://github.com/jblindsay/whitebox-tools', 160 | order: 133, 161 | tags: ['Geospatial', 'Data Analysis'] 162 | } 163 | ] 164 | } 165 | -------------------------------------------------------------------------------- /src/data/sites/main/groups/awesome.ts: -------------------------------------------------------------------------------- 1 | import { IGroup } from '../../../types' 2 | export const Awesome: IGroup = { 3 | icon: 'icon-danganheji', 4 | name: '系列合集', 5 | en_name: 'Awesome', 6 | order: 7, 7 | children: [ 8 | { 9 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*4mL3R7tK0mAAAAAAAAAAAAAADrZ5AQ/original', 10 | name: 'ArcGIS', 11 | en_name: 'Arcgis', 12 | description: 'ArcGIS用户和开发人员的资源列表/ Wiki。', 13 | en_description: 'ArcGIS用户和开发人员的资源列表/ Wiki。', 14 | site_url: 'https://github.com/esri-es/awesome-arcgis/', 15 | order: 242, 16 | tags: ['ArcGIS', '用户', '开发人员'] 17 | }, 18 | { 19 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*4mL3R7tK0mAAAAAAAAAAAAAADrZ5AQ/original', 20 | name: 'ArcGIS Developers', 21 | en_name: 'ArcgisDevelopers', 22 | description: '帮助您进行ArcGIS开发的资源的精选列表。', 23 | en_description: '帮助您进行ArcGIS开发的资源的精选列表。', 24 | site_url: 'https://github.com/Esri/awesome-arcgis-developers', 25 | order: 243, 26 | tags: ['ArcGIS', '开发'] 27 | }, 28 | { 29 | icon: 'https://mdn.alipayobjects.com/huamei_gjo0cl/afts/img/A*QMTFQK37TTsAAAAAAAAAAAAADjDHAQ/original', 30 | name: 'Earth Observation', 31 | en_name: 'EarthobservationCode', 32 | description: 33 | '精选的关于地球观测和地理空间工具、教程、代码、有用的项目、链接等的资源列表!', 34 | en_description: 35 | '精选的关于地球观测和地理空间工具、教程、代码、有用的项目、链接等的资源列表!', 36 | site_url: 'https://github.com/acgeospatial/awesome-earthobservation-code', 37 | order: 244, 38 | tags: ['地球观测', '地理空间工具', '教程', '代码'] 39 | }, 40 | { 41 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*KAeuS6SQGmsAAAAAAAAAAAAADrZ5AQ/original', 42 | name: 'GEE', 43 | en_name: 'GEE', 44 | description: 'Google Earth Engine资源的精选列表。', 45 | en_description: 'Google Earth Engine资源的精选列表。', 46 | site_url: 'https://github.com/giswqs/Awesome-GEE', 47 | order: 245, 48 | tags: ['Google Earth Engine'] 49 | }, 50 | { 51 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*JrakR7NVgpQAAAAAAAAAAAAADrZ5AQ/original', 52 | name: 'GeoJson', 53 | en_name: 'GeoJson', 54 | description: '使您的生活更轻松的GeoJSON实用工具。', 55 | en_description: '使您的生活更轻松的GeoJSON实用工具。', 56 | site_url: 'https://github.com/tmcw/awesome-geojson', 57 | order: 246, 58 | tags: ['GeoJSON'] 59 | }, 60 | { 61 | icon: 'https://mdn.alipayobjects.com/huamei_gjo0cl/afts/img/A*RXfYQ7oi15EAAAAAAAAAAAAADjDHAQ/original', 62 | name: 'GeoSpatial', 63 | en_name: 'GeoSpatial', 64 | description: '大量的地理空间工具和资源。', 65 | en_description: '大量的地理空间工具和资源。', 66 | site_url: 'https://github.com/sacridini/Awesome-Geospatial', 67 | order: 247, 68 | tags: ['地理空间工具'] 69 | }, 70 | { 71 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*e827SJxm8mwAAAAAAAAAAAAADrZ5AQ/original', 72 | name: 'Geospatial-Gompanies', 73 | en_name: 'awesome-geospatial-companies', 74 | description: 75 | '500多家地理空间公司(GIS、地球观测、无人机、卫星、数字农业等)的列表。', 76 | en_description: 77 | '500多家地理空间公司(GIS、地球观测、无人机、卫星、数字农业等)的列表。', 78 | site_url: 'https://github.com/chrieke/awesome-geospatial-companies', 79 | order: 248, 80 | tags: ['地理空间公司', 'GIS', '地球观测', '无人机', '卫星', '数字农业'] 81 | }, 82 | { 83 | icon: 'https://mdn.alipayobjects.com/huamei_gjo0cl/afts/img/A*2K65RotoglsAAAAAAAAAAAAADjDHAQ/original', 84 | name: 'OpenGeoscience', 85 | en_name: 'OpenGeoscience', 86 | description: 87 | '从使我们作为地球科学家、黑客和数据处理者的生活更轻松或更令人敬畏的仓库中精选的。', 88 | en_description: 89 | '从使我们作为地球科学家、黑客和数据处理者的生活更轻松或更令人敬畏的仓库中精选的。', 90 | site_url: 91 | 'https://github.com/softwareunderground/awesome-open-geoscience', 92 | order: 249, 93 | tags: ['地球科学家', '黑客', '数据处理者'] 94 | }, 95 | { 96 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*kpIwTZzKPrkAAAAAAAAAAAAADrZ5AQ/original', 97 | name: 'QGIS', 98 | en_name: 'QGIS', 99 | description: 100 | '一个精选的QGis框架、库、工具、插件、教程、文章、资源等的资源列表。', 101 | en_description: 102 | '一个精选的QGis框架、库、工具、插件、教程、文章、资源等的资源列表。', 103 | site_url: 'https://github.com/totpero/awesome-qgis', 104 | order: 250, 105 | tags: ['QGis', '框架', '库', '工具', '插件', '教程'] 106 | }, 107 | { 108 | icon: 'https://mdn.alipayobjects.com/huamei_gjo0cl/afts/img/A*SLH1QZOg_JAAAAAAAAAAAAAADjDHAQ/original', 109 | name: 'RS-Change-Detection', 110 | en_name: 'RS-Change-Detection', 111 | description: '与遥感变化检测相关的数据集、代码、研究人员和竞赛的列表。', 112 | en_description: 113 | '与遥感变化检测相关的数据集、代码、研究人员和竞赛的列表。', 114 | site_url: 115 | 'https://github.com/wenhwu/awesome-remote-sensing-change-detection', 116 | order: 251, 117 | tags: ['遥感变化检测', '数据集', '代码', '研究人员', '竞赛'] 118 | }, 119 | { 120 | icon: 'https://mdn.alipayobjects.com/huamei_gjo0cl/afts/img/A*QMTFQK37TTsAAAAAAAAAAAAADjDHAQ/original', 121 | name: 'Satellite-imagery-datasets', 122 | en_name: 'Satellite-imagery-datasets', 123 | description: '带有计算机视觉和深度学习注释的卫星图像数据集的列表。', 124 | en_description: '带有计算机视觉和深度学习注释的卫星图像数据集的列表。', 125 | site_url: 'https://github.com/chrieke/awesome-satellite-imagery-datasets', 126 | order: 252, 127 | tags: ['卫星图像数据集', '计算机视觉', '深度学习'] 128 | }, 129 | { 130 | icon: 'https://mdn.alipayobjects.com/huamei_gjo0cl/afts/img/A*SLH1QZOg_JAAAAAAAAAAAAAADjDHAQ/original', 131 | name: 'Vector-tiles', 132 | en_name: 'vector-tiles', 133 | description: '实现Mapbox Vector Tile规范的令人敬畏的工具。', 134 | en_description: '实现Mapbox Vector Tile规范的令人敬畏的工具。', 135 | site_url: 'https://github.com/mapbox/awesome-vector-tiles', 136 | order: 253, 137 | tags: ['Mapbox Vector Tile规范'] 138 | }, 139 | { 140 | icon: 'https://mdn.alipayobjects.com/huamei_gjo0cl/afts/img/A*-UBVSpAQHXoAAAAAAAAAAAAADjDHAQ/original', 141 | name: 'Historic(al) Maps', 142 | en_name: 'Historic(al) Maps', 143 | description: '与历史地图相关的资源、数据库和工具的精选列表。', 144 | en_description: '与历史地图相关的资源、数据库和工具的精选列表。', 145 | site_url: 'https://github.com/stark1tty/Awesome-Historic_al-Maps', 146 | order: 254, 147 | tags: ['历史地图', '资源', '数据库', '工具'] 148 | }, 149 | { 150 | icon: 'https://mdn.alipayobjects.com/huamei_gjo0cl/afts/img/A*37IkTLyFeBoAAAAAAAAAAAAADjDHAQ/original', 151 | name: '3d-tiles', 152 | en_name: '3d-Tiles', 153 | description: 154 | '关于3D Tiles的精选资源列表,3D Tiles是一种用于分层结构化地理空间数据的开放标准。', 155 | en_description: 156 | '关于3D Tiles的精选资源列表,3D Tiles是一种用于分层结构化地理空间数据的开放标准。', 157 | site_url: 'https://github.com/pka/awesome-3d-tiles', 158 | order: 255, 159 | tags: ['3D Tiles', '地理空间数据', '开放标准'] 160 | }, 161 | { 162 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*zr3CSLPw-cgAAAAAAAAAAAAADrZ5AQ/original', 163 | name: 'GeoRust', 164 | en_name: 'GeoRust', 165 | description: 166 | 'GeoRust是一个致力于在Rust编程语言中构建和维护地理空间工具和库的社区。', 167 | en_description: 168 | 'GeoRust is a community dedicated to building and maintaining geospatial tools and libraries in the Rust programming language.', 169 | site_url: 'https://georust.org/', 170 | order: 256, 171 | tags: ['Rust', '地理空间工具', '编程语言'] 172 | } 173 | ] 174 | } 175 | -------------------------------------------------------------------------------- /src/data/sites/tech/groups/awesome.ts: -------------------------------------------------------------------------------- 1 | import { IGroup } from '../../../types' 2 | export const Awesome: IGroup = { 3 | icon: 'icon-danganheji', 4 | name: '系列合集', 5 | en_name: 'Awesome', 6 | order: 0, 7 | children: [ 8 | { 9 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*4mL3R7tK0mAAAAAAAAAAAAAADrZ5AQ/original', 10 | name: 'ArcGIS', 11 | en_name: 'Arcgis', 12 | description: 'ArcGIS用户和开发人员的资源列表/ Wiki。', 13 | en_description: 'ArcGIS用户和开发人员的资源列表/ Wiki。', 14 | site_url: 'https://github.com/esri-es/awesome-arcgis/', 15 | order: 242, 16 | tags: ['ArcGIS', '用户', '开发人员'] 17 | }, 18 | { 19 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*4mL3R7tK0mAAAAAAAAAAAAAADrZ5AQ/original', 20 | name: 'ArcGIS Developers', 21 | en_name: 'ArcgisDevelopers', 22 | description: '帮助您进行ArcGIS开发的资源的精选列表。', 23 | en_description: '帮助您进行ArcGIS开发的资源的精选列表。', 24 | site_url: 'https://github.com/Esri/awesome-arcgis-developers', 25 | order: 243, 26 | tags: ['ArcGIS', '开发'] 27 | }, 28 | { 29 | icon: 'https://mdn.alipayobjects.com/huamei_gjo0cl/afts/img/A*QMTFQK37TTsAAAAAAAAAAAAADjDHAQ/original', 30 | name: 'Earth Observation', 31 | en_name: 'EarthobservationCode', 32 | description: 33 | '精选的关于地球观测和地理空间工具、教程、代码、有用的项目、链接等的资源列表!', 34 | en_description: 35 | '精选的关于地球观测和地理空间工具、教程、代码、有用的项目、链接等的资源列表!', 36 | site_url: 'https://github.com/acgeospatial/awesome-earthobservation-code', 37 | order: 244, 38 | tags: ['地球观测', '地理空间工具', '教程', '代码'] 39 | }, 40 | { 41 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*KAeuS6SQGmsAAAAAAAAAAAAADrZ5AQ/original', 42 | name: 'GEE', 43 | en_name: 'GEE', 44 | description: 'Google Earth Engine资源的精选列表。', 45 | en_description: 'Google Earth Engine资源的精选列表。', 46 | site_url: 'https://github.com/giswqs/Awesome-GEE', 47 | order: 245, 48 | tags: ['Google Earth Engine'] 49 | }, 50 | { 51 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*JrakR7NVgpQAAAAAAAAAAAAADrZ5AQ/original', 52 | name: 'GeoJson', 53 | en_name: 'GeoJson', 54 | description: '使您的生活更轻松的GeoJSON实用工具。', 55 | en_description: '使您的生活更轻松的GeoJSON实用工具。', 56 | site_url: 'https://github.com/tmcw/awesome-geojson', 57 | order: 246, 58 | tags: ['GeoJSON'] 59 | }, 60 | { 61 | icon: 'https://mdn.alipayobjects.com/huamei_gjo0cl/afts/img/A*RXfYQ7oi15EAAAAAAAAAAAAADjDHAQ/original', 62 | name: 'GeoSpatial', 63 | en_name: 'GeoSpatial', 64 | description: '大量的地理空间工具和资源。', 65 | en_description: '大量的地理空间工具和资源。', 66 | site_url: 'https://github.com/sacridini/Awesome-Geospatial', 67 | order: 247, 68 | tags: ['地理空间工具'] 69 | }, 70 | { 71 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*e827SJxm8mwAAAAAAAAAAAAADrZ5AQ/original', 72 | name: 'Geospatial-Gompanies', 73 | en_name: 'awesome-geospatial-companies', 74 | description: 75 | '500多家地理空间公司(GIS、地球观测、无人机、卫星、数字农业等)的列表。', 76 | en_description: 77 | '500多家地理空间公司(GIS、地球观测、无人机、卫星、数字农业等)的列表。', 78 | site_url: 'https://github.com/chrieke/awesome-geospatial-companies', 79 | order: 248, 80 | tags: ['地理空间公司', 'GIS', '地球观测', '无人机', '卫星', '数字农业'] 81 | }, 82 | { 83 | icon: 'https://mdn.alipayobjects.com/huamei_gjo0cl/afts/img/A*2K65RotoglsAAAAAAAAAAAAADjDHAQ/original', 84 | name: 'OpenGeoscience', 85 | en_name: 'OpenGeoscience', 86 | description: 87 | '从使我们作为地球科学家、黑客和数据处理者的生活更轻松或更令人敬畏的仓库中精选的。', 88 | en_description: 89 | '从使我们作为地球科学家、黑客和数据处理者的生活更轻松或更令人敬畏的仓库中精选的。', 90 | site_url: 91 | 'https://github.com/softwareunderground/awesome-open-geoscience', 92 | order: 249, 93 | tags: ['地球科学家', '黑客', '数据处理者'] 94 | }, 95 | { 96 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*kpIwTZzKPrkAAAAAAAAAAAAADrZ5AQ/original', 97 | name: 'QGIS', 98 | en_name: 'QGIS', 99 | description: 100 | '一个精选的QGis框架、库、工具、插件、教程、文章、资源等的资源列表。', 101 | en_description: 102 | '一个精选的QGis框架、库、工具、插件、教程、文章、资源等的资源列表。', 103 | site_url: 'https://github.com/totpero/awesome-qgis', 104 | order: 250, 105 | tags: ['QGis', '框架', '库', '工具', '插件', '教程'] 106 | }, 107 | { 108 | icon: 'https://mdn.alipayobjects.com/huamei_gjo0cl/afts/img/A*SLH1QZOg_JAAAAAAAAAAAAAADjDHAQ/original', 109 | name: 'RS-Change-Detection', 110 | en_name: 'RS-Change-Detection', 111 | description: '与遥感变化检测相关的数据集、代码、研究人员和竞赛的列表。', 112 | en_description: 113 | '与遥感变化检测相关的数据集、代码、研究人员和竞赛的列表。', 114 | site_url: 115 | 'https://github.com/wenhwu/awesome-remote-sensing-change-detection', 116 | order: 251, 117 | tags: ['遥感变化检测', '数据集', '代码', '研究人员', '竞赛'] 118 | }, 119 | { 120 | icon: 'https://mdn.alipayobjects.com/huamei_gjo0cl/afts/img/A*QMTFQK37TTsAAAAAAAAAAAAADjDHAQ/original', 121 | name: 'Satellite-imagery-datasets', 122 | en_name: 'Satellite-imagery-datasets', 123 | description: '带有计算机视觉和深度学习注释的卫星图像数据集的列表。', 124 | en_description: '带有计算机视觉和深度学习注释的卫星图像数据集的列表。', 125 | site_url: 'https://github.com/chrieke/awesome-satellite-imagery-datasets', 126 | order: 252, 127 | tags: ['卫星图像数据集', '计算机视觉', '深度学习'] 128 | }, 129 | { 130 | icon: 'https://mdn.alipayobjects.com/huamei_gjo0cl/afts/img/A*SLH1QZOg_JAAAAAAAAAAAAAADjDHAQ/original', 131 | name: 'Vector-tiles', 132 | en_name: 'vector-tiles', 133 | description: '实现Mapbox Vector Tile规范的令人敬畏的工具。', 134 | en_description: '实现Mapbox Vector Tile规范的令人敬畏的工具。', 135 | site_url: 'https://github.com/mapbox/awesome-vector-tiles', 136 | order: 253, 137 | tags: ['Mapbox Vector Tile规范'] 138 | }, 139 | { 140 | icon: 'https://mdn.alipayobjects.com/huamei_gjo0cl/afts/img/A*-UBVSpAQHXoAAAAAAAAAAAAADjDHAQ/original', 141 | name: 'Historic(al) Maps', 142 | en_name: 'Historic(al) Maps', 143 | description: '与历史地图相关的资源、数据库和工具的精选列表。', 144 | en_description: '与历史地图相关的资源、数据库和工具的精选列表。', 145 | site_url: 'https://github.com/stark1tty/Awesome-Historic_al-Maps', 146 | order: 254, 147 | tags: ['历史地图', '资源', '数据库', '工具'] 148 | }, 149 | { 150 | icon: 'https://mdn.alipayobjects.com/huamei_gjo0cl/afts/img/A*37IkTLyFeBoAAAAAAAAAAAAADjDHAQ/original', 151 | name: '3d-tiles', 152 | en_name: '3d-Tiles', 153 | description: 154 | '关于3D Tiles的精选资源列表,3D Tiles是一种用于分层结构化地理空间数据的开放标准。', 155 | en_description: 156 | '关于3D Tiles的精选资源列表,3D Tiles是一种用于分层结构化地理空间数据的开放标准。', 157 | site_url: 'https://github.com/pka/awesome-3d-tiles', 158 | order: 255, 159 | tags: ['3D Tiles', '地理空间数据', '开放标准'] 160 | }, 161 | { 162 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*zr3CSLPw-cgAAAAAAAAAAAAADrZ5AQ/original', 163 | name: 'GeoRust', 164 | en_name: 'GeoRust', 165 | description: 166 | 'GeoRust是一个致力于在Rust编程语言中构建和维护地理空间工具和库的社区。', 167 | en_description: 168 | 'GeoRust is a community dedicated to building and maintaining geospatial tools and libraries in the Rust programming language.', 169 | site_url: 'https://georust.org/', 170 | order: 256, 171 | tags: ['Rust', '地理空间工具', '编程语言'] 172 | } 173 | ] 174 | } 175 | -------------------------------------------------------------------------------- /src/data/sites/tech/groups/mobile_develop_tools.ts: -------------------------------------------------------------------------------- 1 | import { IGroup } from '../../../types' 2 | export const Application3D: IGroup = { 3 | icon: 'icon-shujuxietong', 4 | name: '移动开发工具', 5 | en_name: 'Mobile Develop Tools', 6 | order: 5, 7 | children: [ 8 | { 9 | icon: 'https://developers.arcgis.com/favicon.ico', 10 | name: 'ArcGIS Maps SDK for Kotlin', 11 | en_name: 'ArcGIS Maps SDK for Kotlin', 12 | description: '构建支持 Esri 的 Android 设备的 2D 和 3D 地图应用程序。', 13 | en_description: 14 | 'Build 2D and 3D mapping applications for Android devices supported by Esri.', 15 | site_url: 'https://developers.arcgis.com/kotlin/', 16 | order: 45, 17 | tags: ['Kotlin', 'Android', 'Mapping SDK'] 18 | }, 19 | { 20 | icon: 'https://developers.google.com/maps/documentation/android-sdk/images/favicon.png', 21 | name: 'Google Maps API for Android', 22 | en_name: 'Google Maps API for Android', 23 | description: '为 Android 应用程序提供强大的地图功能。', 24 | en_description: 25 | 'Provides powerful mapping features for Android applications.', 26 | site_url: 'https://developers.google.com/maps/android/', 27 | order: 46, 28 | tags: ['Android', 'Mapping API'] 29 | }, 30 | { 31 | icon: 'https://docs.mapbox.com/favicon.ico', 32 | name: 'Mapbox Android SDK', 33 | en_name: 'Mapbox Android SDK', 34 | description: 35 | '包括用于静态矢量和栅格地图、相机使用、导航和自定义标记绘制的 API。', 36 | en_description: 37 | 'Includes APIs for static vector and raster maps, camera use, navigation, and custom marker drawing.', 38 | site_url: 'https://www.mapbox.com/android-sdk/', 39 | order: 47, 40 | tags: ['Android', 'Mapping SDK'] 41 | }, 42 | { 43 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 44 | name: 'NextGIS Android SDK', 45 | en_name: 'NextGIS Android SDK', 46 | description: '用于 Android 地理应用程序的开源库。', 47 | en_description: 'An open source library for Android geo applications.', 48 | site_url: 'https://github.com/nextgis/android_maplib', 49 | order: 48, 50 | tags: ['Android', 'Geo Applications', 'Open Source'] 51 | }, 52 | { 53 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 54 | name: 'OpenOrienteering Mapper', 55 | en_name: 'OpenOrienteering Mapper', 56 | description: '用于创建定向运动地图的软件。', 57 | en_description: 58 | 'A software for creating maps for the orienteering sport.', 59 | site_url: 'https://github.com/openorienteering/mapper', 60 | order: 49, 61 | tags: ['Mapping', 'Orienteering', 'Open Source'] 62 | }, 63 | { 64 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 65 | name: 'TileView', 66 | en_name: 'TileView', 67 | description: '异步显示基于瓦片的图像的库,具有用于 2D 地图的附加功能。', 68 | en_description: 69 | 'Asynchronously display tile-based images, with additional functionality for 2D map.', 70 | site_url: 'https://github.com/moagrius/TileView', 71 | order: 50, 72 | tags: ['Tile-based Images', 'Android', 'Mapping'] 73 | }, 74 | { 75 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 76 | name: 'WhirlyGlobe-Maply', 77 | en_name: 'WhirlyGlobe-Maply', 78 | description: 79 | '用于 Android 的 3D 球体和平面地图 SDK。该工具包具有对地图或球体进行精细控制的大量 API。它可以读取多种 GIS 数据格式。', 80 | en_description: 81 | '3D globe and flat-map SDK for Android. This toolkit has a large API for fine-grained control over the map or globe. It reads a wide variety of GIS data formats.', 82 | site_url: 'https://github.com/mousebird/WhirlyGlobe', 83 | order: 51, 84 | tags: ['3D Globe', 'Flat-map', 'Android', 'Mapping SDK'] 85 | }, 86 | { 87 | icon: 'https://developers.arcgis.com/favicon.ico', 88 | name: 'ArcGIS Maps SDK for .NET', 89 | en_name: 'ArcGIS Maps SDK for .NET', 90 | description: 91 | '使用由 Esri 支持的 .NET Multi-platform App UI (MAUI) 在 C# 中构建 Android 和 iOS 的本机地图应用程序。', 92 | en_description: 93 | 'Build native mapping apps for Android and iOS in C# using .NET Multi-platform App UI (MAUI) supported by Esri.', 94 | site_url: 'https://developers.arcgis.com/net/', 95 | order: 52, 96 | tags: ['.NET', 'MAUI', 'Mapping SDK'] 97 | }, 98 | { 99 | icon: 'https://developers.arcgis.com/favicon.ico', 100 | name: 'ArcGIS Maps SDK for Qt', 101 | en_name: 'ArcGIS Maps SDK for Qt', 102 | description: 103 | '在 Qt 中构建 Android 和 iOS 的本机地图应用程序,由 Esri 支持。', 104 | en_description: 105 | 'Build native mapping apps for Android and iOS in Qt supported by Esri.', 106 | site_url: 'https://developers.arcgis.com/qt/', 107 | order: 53, 108 | tags: ['Qt', 'Android', 'iOS', 'Mapping SDK'] 109 | }, 110 | { 111 | icon: 'https://developers.arcgis.com/favicon.ico', 112 | name: 'ArcGIS Maps SDK for Swift', 113 | en_name: 'ArcGIS Maps SDK for Swift', 114 | description: 115 | '使用由 Esri 支持的工具构建 iOS 设备的 2D 和 3D 地图应用程序。', 116 | en_description: 117 | 'Build 2D and 3D mapping applications for iOS devices supported by Esri.', 118 | site_url: 'https://developers.arcgis.com/swift/', 119 | order: 54, 120 | tags: ['Swift', 'iOS', 'Mapping SDK'] 121 | }, 122 | { 123 | icon: 'https://developers.google.com/maps/documentation/ios-sdk/images/favicon.png', 124 | name: 'Google Maps API for iOS', 125 | en_name: 'Google Maps API for iOS', 126 | description: '为 iOS 应用程序提供强大的地图功能。', 127 | en_description: 128 | 'Provides powerful mapping features for iOS applications.', 129 | site_url: 'https://developers.google.com/maps/ios/', 130 | order: 55, 131 | tags: ['iOS', 'Mapping API'] 132 | }, 133 | { 134 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*AovwR7a7TqkAAAAAAAAAAAAADrZ5AQ/original', 135 | name: 'Mapbox iOS SDK', 136 | en_name: 'Mapbox iOS SDK', 137 | description: '包括用于静态地图、路线和导航的 API。', 138 | en_description: 139 | 'Includes APIs for static maps, directions, and navigation.', 140 | site_url: 'https://www.mapbox.com/ios-sdk/', 141 | order: 56, 142 | tags: ['iOS', 'Mapping SDK'] 143 | }, 144 | { 145 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 146 | name: 'NextGIS iOS SDK', 147 | en_name: 'NextGIS iOS SDK', 148 | description: '用于 iOS 地理应用程序的开源库。', 149 | en_description: 'An open source library for iOS geo applications.', 150 | site_url: 'https://github.com/nextgis/ios_maplib', 151 | order: 57, 152 | tags: ['iOS', 'Geo Applications', 'Open Source'] 153 | }, 154 | { 155 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 156 | name: 'WhirlyGlobe-Maply', 157 | en_name: 'WhirlyGlobe-Maply', 158 | description: 159 | '用于 iOS 的 3D 球体和平面地图 SDK。该工具包具有对地图或球体进行精细控制的大量 API。它可以读取多种 GIS 数据格式。', 160 | en_description: 161 | '3D globe and flat-map SDK for iOS. This toolkit has a large API for fine-grained control over the map or globe. It reads a wide variety of GIS data formats.', 162 | site_url: 'https://github.com/mousebird/WhirlyGlobe', 163 | order: 58, 164 | tags: ['3D Globe', 'Flat-map', 'iOS', 'Mapping SDK'] 165 | } 166 | ] 167 | } 168 | -------------------------------------------------------------------------------- /src/components/mobile-sider/index.tsx: -------------------------------------------------------------------------------- 1 | import Sider from 'antd/es/layout/Sider' 2 | import classNames from 'classnames' 3 | import React, { useEffect, useRef, useState } from 'react' 4 | import './index.css' 5 | import logoIcon from '../../assets/logo_icon.png' 6 | import { SitesConfig } from '../../data/sites' 7 | import { IGroup } from '../../data/types' 8 | import { 9 | AppstoreOutlined, 10 | CaretDownOutlined, 11 | CaretUpOutlined, 12 | CheckOutlined 13 | } from '@ant-design/icons' 14 | import { Input, Space, Tag } from 'antd' 15 | import { UrlSetSite } from '../../utils' 16 | import { useDebounceFn } from 'ahooks' 17 | 18 | type MobileSiderPopup = { 19 | siteData: string 20 | setSiteData: (value: string) => void 21 | setSiteSearch: (value: string) => void 22 | } 23 | 24 | export const MobileSider: React.FC = ({ 25 | siteData, 26 | setSiteData, 27 | setSiteSearch 28 | }) => { 29 | const [selectedTag, setSelectedTag] = useState(undefined) 30 | const [collapsed, setCollapsed] = useState(false) 31 | const [activeIcon, setActiveIcon] = useState(false) 32 | const [activeSite, setActiveSite] = useState(false) 33 | const [inputValue, setInputValue] = useState('') 34 | const siteConfig = SitesConfig[siteData] 35 | const divRef = useRef(null) 36 | 37 | const tagClick = (item: IGroup) => { 38 | if (inputValue !== '') { 39 | setSiteSearch('') 40 | setInputValue('') 41 | } 42 | setTimeout(() => { 43 | const element = document.querySelector( 44 | `#map-${item.name.replace(/\s/g, '-').replace(/\+/g, 'plus')}` 45 | ) 46 | if (element) { 47 | // element.scrollIntoView({ block: 'start', behavior: 'smooth' }) 48 | const elementPosition = element.getBoundingClientRect().top 49 | const offsetPosition = elementPosition + window.scrollY - 68 50 | window.scrollTo({ 51 | top: offsetPosition, 52 | behavior: 'smooth' 53 | }) 54 | setSelectedTag(item.name) 55 | } 56 | }, 110) 57 | } 58 | useEffect(() => { 59 | const handleTouchStart: EventListener = (event) => { 60 | if (divRef.current && !divRef.current.contains(event.target as Node)) { 61 | setActiveIcon(false) 62 | setActiveSite(false) 63 | setCollapsed(false) 64 | } 65 | } 66 | document.addEventListener('touchstart', handleTouchStart) 67 | return () => { 68 | document.removeEventListener('touchstart', handleTouchStart) 69 | } 70 | }, []) 71 | 72 | const { run: onInputChange } = useDebounceFn( 73 | (e) => { 74 | setSiteSearch(e.target.value) 75 | }, 76 | { wait: 100 } 77 | ) 78 | return ( 79 | 83 |
84 |
85 |
86 | { 91 | setSiteData('main') 92 | UrlSetSite('main') 93 | setSelectedTag(undefined) 94 | setActiveIcon(false) 95 | setActiveSite(false) 96 | setCollapsed(false) 97 | setInputValue('') 98 | setSiteSearch('') 99 | }} 100 | /> 101 |
{ 103 | e.stopPropagation() 104 | setActiveSite(!activeSite) 105 | setInputValue('') 106 | setSiteSearch('') 107 | if (!activeSite && activeIcon) { 108 | setCollapsed(true) 109 | setActiveIcon(false) 110 | } else if (!activeSite && !activeIcon) { 111 | setCollapsed(true) 112 | } else { 113 | setCollapsed(false) 114 | } 115 | }} 116 | className="mobile-sider-select" 117 | > 118 |
119 | {siteConfig.name} 120 |
121 |
122 | 123 | 124 |
125 |
126 |
127 | 128 |
129 | { 134 | onInputChange(e) 135 | setInputValue(e.target.value) 136 | }} 137 | /> 138 | { 143 | setActiveIcon(!activeIcon) 144 | if (activeSite && !activeIcon) { 145 | setCollapsed(true) 146 | setActiveSite(false) 147 | } else if (!activeSite && !activeIcon) { 148 | setCollapsed(true) 149 | } else { 150 | setCollapsed(false) 151 | } 152 | }} 153 | /> 154 |
155 |
156 |
157 | {activeIcon && ( 158 |
159 | {siteConfig.groups.map((group: IGroup) => { 160 | return ( 161 | 162 | { 170 | e.stopPropagation() 171 | tagClick(group) 172 | setCollapsed(false) 173 | setActiveIcon(false) 174 | }} 175 | > 176 | {group.name} 177 | 178 | 179 | ) 180 | })} 181 |
182 | )} 183 | {activeSite && ( 184 |
185 | {Object.keys(SitesConfig).map((key: string) => { 186 | return ( 187 |
{ 193 | e.stopPropagation() 194 | setSiteData(key) 195 | UrlSetSite(key) 196 | setCollapsed(false) 197 | setActiveSite(false) 198 | }} 199 | > 200 |
{SitesConfig[key].name}
201 | {key === siteData && } 202 |
203 | ) 204 | })} 205 |
206 | )} 207 |
208 |
209 |
210 | ) 211 | } 212 | -------------------------------------------------------------------------------- /src/components/app-sider/index.tsx: -------------------------------------------------------------------------------- 1 | import { useEffect, useMemo, useRef, useState } from 'react' 2 | import logo from '../../assets/logo.png' 3 | import type { IGroup } from '../../data/types' 4 | import { SitesConfig } from '../../data/sites' 5 | import './index.css' 6 | import { Input, Space, Tag } from 'antd' 7 | import classNames from 'classnames' 8 | import logoIcon from '../../assets/logo_icon.png' 9 | import { 10 | AppstoreOutlined, 11 | CaretDownOutlined, 12 | CaretUpOutlined, 13 | CheckOutlined 14 | } from '@ant-design/icons' 15 | import { UrlSetSite } from '../../utils' 16 | import { useDebounceFn } from 'ahooks' 17 | 18 | type AppSilderPopup = { 19 | collapsed: boolean 20 | siteData: string 21 | setSiteData: (value: string) => void 22 | setSiteSearch: (value: string) => void 23 | } 24 | 25 | export const AppSider: React.FC = ({ 26 | collapsed, 27 | siteData, 28 | setSiteData, 29 | setSiteSearch 30 | }) => { 31 | const [selectedTag, setSelectedTag] = useState(undefined) 32 | const [activeIcon, setActiveIcon] = useState(false) 33 | const [activeSite, setActiveSite] = useState(false) 34 | const siteConfig = SitesConfig[siteData] 35 | const divRef = useRef(null) 36 | const collapsedTag = useRef(null) 37 | const [inputValue, setInputValue] = useState('') 38 | const tagClick = (item: IGroup) => { 39 | if (inputValue !== '') { 40 | setSiteSearch('') 41 | setInputValue('') 42 | } 43 | setTimeout(() => { 44 | const element = document.querySelector( 45 | `#map-${item.name.replace(/\s/g, '-').replace(/\+/g, 'plus')}` 46 | ) 47 | if (element) { 48 | element.scrollIntoView({ block: 'start', behavior: 'smooth' }) 49 | setSelectedTag(item.name) 50 | } 51 | }, 110) 52 | } 53 | useEffect(() => { 54 | const handleClickOutside: EventListener = (event) => { 55 | if (divRef.current && !divRef.current.contains(event.target as Node)) { 56 | setActiveSite(false) 57 | } 58 | if ( 59 | collapsedTag.current && 60 | !collapsedTag.current.contains(event.target as Node) 61 | ) { 62 | setActiveIcon(false) 63 | } 64 | } 65 | document.addEventListener('click', handleClickOutside) 66 | return () => { 67 | document.removeEventListener('click', handleClickOutside) 68 | } 69 | }, []) 70 | const content = useMemo(() => { 71 | return activeSite ? ( 72 |
73 | {Object.keys(SitesConfig).map((key: string) => { 74 | return ( 75 |
{ 79 | e.stopPropagation() 80 | setSiteData(key) 81 | UrlSetSite(key) 82 | setActiveSite(false) 83 | }} 84 | > 85 |
{SitesConfig[key].name}
86 | {key === siteData && } 87 |
88 | ) 89 | })} 90 |
91 | ) : null 92 | }, [siteData, activeSite]) 93 | 94 | const { run: onInputChange } = useDebounceFn( 95 | (e) => { 96 | setSiteSearch(e.target.value) 97 | }, 98 | { wait: 100 } 99 | ) 100 | return ( 101 |
102 |
103 | { 112 | setSiteData('main') 113 | UrlSetSite('main') 114 | setSelectedTag(undefined) 115 | }} 116 | src={logoIcon} 117 | alt="" 118 | /> 119 | { 128 | setSiteData('main') 129 | UrlSetSite('main') 130 | setSelectedTag(undefined) 131 | setInputValue('') 132 | setSiteSearch('') 133 | }} 134 | src={logo} 135 | alt="" 136 | /> 137 | {!collapsed && ( 138 |
139 |
{ 142 | e.stopPropagation() 143 | setActiveSite(!activeSite) 144 | setInputValue('') 145 | setSiteSearch('') 146 | }} 147 | className="silder-select" 148 | > 149 |
150 | {siteConfig.name} 151 |
152 |
153 | 154 | 155 |
156 |
157 | 158 | {content} 159 |
160 | )} 161 |
162 |
163 | {!collapsed && ( 164 | { 170 | onInputChange(e) 171 | setInputValue(e.target.value) 172 | }} 173 | /> 174 | )} 175 |
176 | {collapsed ? ( 177 |
178 | { 181 | setActiveIcon(!activeIcon) 182 | }} 183 | /> 184 | {activeIcon && ( 185 |
186 | {siteConfig.groups.map((group: IGroup) => { 187 | return ( 188 | 189 | { 195 | e.stopPropagation() 196 | tagClick(group) 197 | setActiveIcon(false) 198 | }} 199 | > 200 | {group.name} 201 | 202 | 203 | ) 204 | })} 205 |
206 | )} 207 |
208 | ) : ( 209 |
210 | {siteConfig.groups.map((group: IGroup) => { 211 | return ( 212 | 213 | { 219 | tagClick(group) 220 | }} 221 | > 222 | {group.name} 223 | 224 | 225 | ) 226 | })} 227 |
228 | )} 229 |
230 | ) 231 | } 232 | -------------------------------------------------------------------------------- /src/data/sites/data/groups/rs_sharing_station_zh_cn.ts: -------------------------------------------------------------------------------- 1 | import { IGroup } from '../../../types' 2 | 3 | export const RSSharingStationCN: IGroup = { 4 | icon: 'icon-yaogancehui', 5 | name: '遥感', 6 | en_name: 'RS Data Sharing station', 7 | order: 2, 8 | children: [ 9 | { 10 | icon: 'http://ids.ceode.ac.cn/images/wen-top.png', 11 | name: '中国遥感数据共享网', 12 | en_name: 'China Remote Sensing Data Sharing Network', 13 | description: 14 | '国内存档周期最长的数据网站,对Landsat数据免费共享,也可订购国外商业卫星数据。注册账号,通过审核就可直接下载。', 15 | en_description: 16 | 'The longest-archived data website in China, offering free sharing of Landsat data and the option to order commercial satellite data from abroad. Direct download available upon account registration and approval.', 17 | site_url: 'http://ids.ceode.ac.cn/', 18 | order: 12, 19 | tags: ['Remote Sensing', 'Satellite', 'Earth Observation'] 20 | }, 21 | { 22 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*RCHPRq0zdWkAAAAAAAAAAAAADrZ5AQ/original', 23 | name: '卫星资源中心数据平台', 24 | en_name: 'Cresda Data Platform', 25 | description: 'Cresda 数据平台提供地球空间数据的集成、管理和应用服务。', 26 | en_description: 27 | 'Cresda Data Platform offers integrated, managed, and applied services for Earth spatial data.', 28 | site_url: 'https://data.cresda.cn/#/home', 29 | order: 12, 30 | tags: [ 31 | 'Spatial Data', 32 | 'Data Integration', 33 | 'Data Management', 34 | 'Data Application' 35 | ] 36 | }, 37 | { 38 | icon: 'https://dataspace.copernicus.eu/favicon.ico', 39 | name: '哨兵数据', 40 | en_name: 'Sentinel data', 41 | description: '哨兵数据发布平台', 42 | en_description: 'Sentinel data publish platform', 43 | site_url: 'https://dataspace.copernicus.eu/browser/', 44 | order: 2, 45 | tags: ['Remote Sensing', 'Sentinel'] 46 | }, 47 | { 48 | icon: 'https://earthexplorer.usgs.gov/img/favicon.ico', 49 | name: 'Landsat-USGS', 50 | en_name: 'USGS', 51 | description: 'Landsat数据发布平台,同时也包含多种遥感数据浏览和发布', 52 | en_description: 53 | 'Landsat data publishing platform, but also includes a variety of remote sensing data browsing and publishing', 54 | site_url: 'https://earthexplorer.usgs.gov/', 55 | order: 2, 56 | tags: ['Remote Sensing', 'Landsat'] 57 | }, 58 | { 59 | icon: 'https://search.earthdata.nasa.gov/favicon.ico?v=1.1', 60 | name: 'MODIS-NASA Earthdata Search', 61 | en_name: 'MODIS-NASA Earthdata Search', 62 | description: 'MODIS数据发布平台', 63 | en_description: 'MODIS data publishing platform', 64 | site_url: 'https://search.earthdata.nasa.gov/search', 65 | order: 2, 66 | tags: ['Remote Sensing', 'MODIS'] 67 | }, 68 | { 69 | icon: 'https://search.earthdata.nasa.gov/favicon.ico?v=1.1', 70 | name: '吉林一号', 71 | en_name: 'Jilin No.1', 72 | description: '吉林一号卫星商城', 73 | en_description: 'Jilin yihao satellite shopping mall', 74 | site_url: 'https://www.jl1mall.com/store/', 75 | order: 2, 76 | tags: ['Remote Sensing', 'Jilin'] 77 | }, 78 | { 79 | icon: 'https://www.geoportal.org/favicon.ico', 80 | name: 'GEOSS Portal', 81 | en_name: 'Global Earth Observation System of Systems (GEOSS) Portal', 82 | description: 83 | 'GEOSS Portal is the primary access point for the Global Earth Observation System of Systems (GEOSS), a collaborative effort to build a comprehensive and coordinated global network of Earth observation systems. The portal provides users with access to a wealth of Earth observation data, information, and services contributed by various international organizations, space agencies, and research institutions.', 84 | en_description: 85 | 'The GEOSS Portal serves as a central hub for accessing a wide range of Earth observation data and resources. It plays a crucial role in promoting the sharing of environmental data and information on a global scale. Users, including scientists, policymakers, and the general public, can explore and utilize the diverse datasets available through the portal to address environmental challenges, monitor changes, and support informed decision-making.', 86 | site_url: 'https://www.geoportal.org/', 87 | order: 8, 88 | tags: [ 89 | 'Earth Observation', 90 | 'Global Collaboration', 91 | 'Data Access', 92 | 'Environmental Monitoring' 93 | ] 94 | }, 95 | { 96 | icon: 'https://ladsweb.modaps.eosdis.nasa.gov/images/favicon/index.ico', 97 | name: '一级和大气存档与分发系统分布式活动存档中心', 98 | en_name: 99 | 'Level 1 and Atmospheric Archive and Distribution System Distributed Active Archive Center', 100 | description: 101 | 'LAADS DAAC是美国国家航空航天局戈达德航天中心用于存储数据的网站接口。该平台提供了MODIS、Envisat、Sentinel等常见遥感数据。', 102 | en_description: 103 | "LAADS DAAC, the Level 1 and Atmospheric Archive and Distribution System Distributed Active Archive Center, is a website interface used by NASA's Goddard Space Flight Center for data storage. The platform offers commonly used remote sensing data such as MODIS, Envisat, Sentinel, and more.", 104 | site_url: 'https://ladsweb.modaps.eosdis.nasa.gov/', 105 | order: 9, 106 | tags: ['NASA', 'Remote Sensing Data', 'MODIS', 'Envisat', 'Sentinel'] 107 | }, 108 | { 109 | icon: 'https://srtm.csi.cgiar.org/wp-content/uploads/2018/11/cropped-cgiar-csi_new_logo_2011_final-2.png', 110 | name: '航天飞机雷达地形测绘使命SRTM', 111 | en_name: 'Space Shuttle Radar Topography Mission SRTM', 112 | description: 113 | 'SRTM是由美国太空总署(NASA)和国防部国家测绘局(NIMA)联合测量的地形测绘使命。该任务主要以航天飞机为平台,对地球表面进行遥感测量,提供高质量的地形数据。', 114 | en_description: 115 | "The Space Shuttle Radar Topography Mission (SRTM) is a topographic mapping mission conducted in collaboration between NASA (National Aeronautics and Space Administration) and the National Geospatial-Intelligence Agency (NGA). Using the Space Shuttle as a platform, SRTM performs remote sensing measurements on Earth's surface, providing high-quality terrain data.", 116 | site_url: 'http://srtm.csi.cgiar.org/srtmdata/', 117 | order: 10, 118 | tags: [ 119 | 'NASA', 120 | 'Topography Mapping', 121 | 'SRTM', 122 | 'Remote Sensing', 123 | 'Terrain Data' 124 | ] 125 | }, 126 | { 127 | icon: 'https://www.ngdc.noaa.gov/favicon.ico', 128 | name: '夜光遥感数据', 129 | en_name: 'Nighttime Lights Remote Sensing Data', 130 | description: 131 | '夜光遥感数据由美国国家地球物理数据中心(NGDC)提供。该数据用于观测地球表面的夜光亮度,为研究城市化、经济活动和人口分布等提供重要信息。', 132 | en_description: 133 | "Nighttime Lights Remote Sensing Data is provided by the National Geophysical Data Center (NGDC) of the United States. This data is used to observe the nighttime brightness of the Earth's surface, providing crucial information for studying urbanization, economic activities, and population distribution.", 134 | site_url: 'https://www.ngdc.noaa.gov/eog/download.html', 135 | order: 11, 136 | tags: [ 137 | 'Nighttime Lights', 138 | 'Remote Sensing Data', 139 | 'Urbanization', 140 | 'Economic Activities', 141 | 'Population Distribution' 142 | ] 143 | }, 144 | { 145 | icon: 'https://landcover100.com/img/logo.png', 146 | name: '遥感产品数据云', 147 | en_name: 'Data Cloud of RS products - DEMs & LCs', 148 | description: 149 | '由锐多宝提供。目前涵盖了大部分的 DEM 数据和土地覆盖数据下载,以及部分数据的快速预览。下载无需登陆。', 150 | en_description: 151 | "Provided by Ruiduobao. The site currently provides freely download service as well as quick preview of most DEM datasets and land cover datasets.", 152 | site_url: 'https://landcover100.com', 153 | order: 12, 154 | tags: [ 155 | 'DEM', 156 | 'Land Cover Data' 157 | ] 158 | } 159 | ] 160 | } 161 | -------------------------------------------------------------------------------- /src/components/app-content/index.tsx: -------------------------------------------------------------------------------- 1 | import { SitesConfig } from '../../data/sites' 2 | import { Avatar, Row, Card, Col, Tooltip, FloatButton, Empty } from 'antd' 3 | import { FileTextOutlined } from '@ant-design/icons' 4 | import './index.css' 5 | import { IGroup, IItem } from '../../data/types' 6 | import { IconFont } from '../../constants' 7 | import React, { useEffect, useMemo, useState } from 'react' 8 | import { CollectCard } from './component/collect' 9 | import { useLocalStorageState } from 'ahooks' 10 | import classNames from 'classnames' 11 | import { isMobileDevice } from '../../utils' 12 | 13 | type AppCardPopup = { 14 | siteData: string 15 | siteSearch: string 16 | } 17 | 18 | export const AppCard: React.FC = ({ siteData, siteSearch }) => { 19 | const [localCollect, setLocalCollect] = useLocalStorageState( 20 | 'collects', 21 | { 22 | defaultValue: [] 23 | } 24 | ) 25 | const [searchData, setSearchData] = useState([]) 26 | 27 | const siteConfig = useMemo(() => { 28 | for (const key in SitesConfig) { 29 | SitesConfig[key].groups.forEach((item) => { 30 | item['key'] = key 31 | item.children.forEach((v) => { 32 | v['key'] = key 33 | }) 34 | }) 35 | } 36 | return SitesConfig 37 | }, [siteData]) 38 | 39 | useEffect(() => { 40 | const newListData: IGroup[] = [] 41 | const newData = Object.entries(SitesConfig) 42 | .map(([key, value]) => { 43 | return value.groups.map((item) => { 44 | return { ...item, key: key } 45 | }) 46 | }) 47 | .flat() 48 | newData.forEach((item) => { 49 | const { children } = item 50 | let newChildren: IItem[] = [] 51 | 52 | if (siteSearch) { 53 | // siteSearch不是空字符串,创建不区分大小写的正则表达式 54 | const regex = new RegExp(siteSearch, 'gi') 55 | 56 | newChildren = children.filter((v) => { 57 | const { name, description } = v 58 | return regex.test(name) || regex.test(description) 59 | }) 60 | } 61 | if (newChildren.length) { 62 | newListData.push({ ...item, children: newChildren }) 63 | } 64 | }) 65 | setSearchData(siteSearch ? newListData : siteConfig[siteData].groups) 66 | }, [siteSearch, siteConfig, siteData]) 67 | 68 | return ( 69 | <> 70 |
78 | 82 | {searchData.map((group: IGroup, index) => { 83 | const { name, children, icon } = group 84 | return ( 85 | 89 | {icon && ( 90 |
91 | 92 |
93 | )} 94 |
{name}
95 |
96 | } 97 | className={classNames(['item-content'])} 98 | id={`map-${name.replace(/\s/g, '-').replace(/\+/g, 'plus')}`} 99 | key={`${group.key}_${name}_${index}`} 100 | > 101 | 102 | {children.length ? ( 103 | children.map((val, index) => { 104 | const findData = localCollect?.find((item) => { 105 | return ( 106 | item.name === val.name && item.site_url === val.site_url 107 | ) 108 | }) 109 | return ( 110 | { 117 | window.open(val.site_url) 118 | }} 119 | key={`${name}_${val.name}_${index}`} 120 | > 121 |
122 |
123 | 129 | {val.icon ? null : val.name.charAt(0)} 130 | 131 |
132 |
133 | {val.name} 134 | 135 |

136 | {val.description} 137 |

138 |
139 |
140 |
141 | {findData ? ( 142 | { 149 | e.stopPropagation() 150 | const newSiteData = localCollect?.filter( 151 | (item) => { 152 | return ( 153 | item.name !== val.name && 154 | item.site_url !== val.site_url 155 | ) 156 | } 157 | ) 158 | if (localCollect && newSiteData) { 159 | setLocalCollect(newSiteData) 160 | } 161 | }} 162 | /> 163 | ) : ( 164 | { 171 | e.stopPropagation() 172 | if (localCollect) { 173 | const newData = [...localCollect, val] 174 | setLocalCollect(newData) 175 | } 176 | }} 177 | /> 178 | )} 179 |
180 |
181 | 182 | ) 183 | }) 184 | ) : ( 185 |
186 | 190 |
191 | )} 192 |
193 | 194 | ) 195 | })} 196 | 197 | 新站点提报} 199 | icon={} 200 | onClick={() => { 201 | window.open( 202 | 'https://www.yuque.com/forms/share/0df1d286-b6c9-4412-9605-504af8cfb21f' 203 | ) 204 | }} 205 | /> 206 | 207 | ) 208 | } 209 | -------------------------------------------------------------------------------- /src/data/sites/tech/groups/geospatial_library/go.ts: -------------------------------------------------------------------------------- 1 | import { IGroup } from '../../../../types' 2 | export const Go: IGroup = { 3 | icon: 'icon-Goyuyan', 4 | name: 'Go', 5 | en_name: 'Go', 6 | order: 5, 7 | children: [ 8 | { 9 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 10 | name: 'BoxTree', 11 | en_name: 'BoxTree', 12 | description: '用于 Go 的 R 树实现。', 13 | en_description: 'An R-tree implementation for Go.', 14 | site_url: 'https://github.com/tidwall/boxtree', 15 | order: 63, 16 | tags: ['Go', 'R-tree'] 17 | }, 18 | { 19 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 20 | name: 'BuntDB', 21 | en_name: 'BuntDB', 22 | description: 23 | 'BuntDB 是一个可嵌入、基于内存的 Go 键/值数据库,具有自定义索引和地理空间支持。', 24 | en_description: 25 | 'BuntDB is an embeddable, in-memory key/value database for Go with custom indexing and geospatial support.', 26 | site_url: 'https://github.com/tidwall/buntdb', 27 | order: 64, 28 | tags: ['Go', 'Key/Value Database', 'Geospatial Support'] 29 | }, 30 | { 31 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 32 | name: 'Draw2D', 33 | en_name: 'Draw2D', 34 | description: '适用于不同输出(光栅、pdf)的 2D 渲染。', 35 | en_description: '2D rendering for different output (raster, pdf).', 36 | site_url: 'https://github.com/llgcode/draw2d', 37 | order: 65, 38 | tags: ['2D Rendering', 'Go'] 39 | }, 40 | { 41 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 42 | name: 'geom', 43 | en_name: 'geom', 44 | description: '适用于 Go 的几何对象和函数。', 45 | en_description: 'Geometry objects and functions for Go.', 46 | site_url: 'https://github.com/ctessum/geom', 47 | order: 66, 48 | tags: ['Go', 'Geometry'] 49 | }, 50 | { 51 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 52 | name: 'geoos', 53 | en_name: 'geoos', 54 | description: '一个库,提供空间数据和几何算法。', 55 | en_description: 56 | 'A library provides spatial data and geometric algorithms.', 57 | site_url: 'https://github.com/spatial-go/geoos', 58 | order: 67, 59 | tags: ['Go', 'Spatial Data', 'Geometric Algorithms'] 60 | }, 61 | { 62 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 63 | name: 'Go GDAL', 64 | en_name: 'Go GDAL', 65 | description: '用于 Go 的 GDAL(地理空间数据抽象库)包装器。', 66 | en_description: 67 | 'Go (golang) wrapper for GDAL, the Geospatial Data Abstraction Library.', 68 | site_url: 'https://github.com/lukeroth/gdal', 69 | order: 68, 70 | tags: ['Go', 'GDAL'] 71 | }, 72 | { 73 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 74 | name: 'Go.Geo', 75 | en_name: 'Go.Geo', 76 | description: 'Go 中的几何/地理库。', 77 | en_description: 'Geometry/geography library in Go.', 78 | site_url: 'https://github.com/paulmach/go.geo', 79 | order: 69, 80 | tags: ['Go', 'Geometry', 'Geography'] 81 | }, 82 | { 83 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 84 | name: 'go-geom', 85 | en_name: 'go-geom', 86 | description: '用于处理几何的 Go 库。', 87 | en_description: 'Go library for handling geometries.', 88 | site_url: 'https://github.com/twpayne/go-geom', 89 | order: 70, 90 | tags: ['Go', 'Geometry'] 91 | }, 92 | { 93 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 94 | name: 'Golang-Ellipsoid', 95 | en_name: 'Golang-Ellipsoid', 96 | description: '用于计算椭球上的距离和位置的 Golang 包。', 97 | en_description: 98 | 'Golang package to calculate distances and locations on an Ellipsoid.', 99 | site_url: 'https://github.com/StefanSchroeder/Golang-Ellipsoid', 100 | order: 71, 101 | tags: ['Golang', 'Ellipsoid', 'Distance', 'Location'] 102 | }, 103 | { 104 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 105 | name: 'Golang-Ellipsoid', 106 | en_name: 'Golang-Ellipsoid', 107 | description: '用于在椭球上计算距离和位置的 Golang 包。', 108 | en_description: 109 | 'Golang package to calculate distances and locations on an Ellipsoid.', 110 | site_url: 'https://github.com/StefanSchroeder/Golang-Ellipsoid', 111 | order: 63, 112 | tags: ['Golang', 'Ellipsoid', 'Distance Calculation'] 113 | }, 114 | { 115 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 116 | name: 'gopostal', 117 | en_name: 'gopostal', 118 | description: '用于快速国际地址解析/规范化的 Go(cgo)接口到 libpostal。', 119 | en_description: 120 | 'Go (cgo) interface to libpostal for fast international address parsing/normalization.', 121 | site_url: 'https://github.com/openvenues/gopostal', 122 | order: 64, 123 | tags: ['Go', 'libpostal', 'Address Parsing', 'Normalization'] 124 | }, 125 | { 126 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 127 | name: 'Go-proj-4', 128 | en_name: 'Go-proj-4', 129 | description: 'Cartographic Projections Library PROJ.4 的 Go 绑定。', 130 | en_description: 131 | 'Go bindings for the Cartographic Projections Library PROJ.4.', 132 | site_url: 'https://github.com/pebbe/go-proj-4', 133 | order: 65, 134 | tags: ['Go', 'PROJ.4', 'Cartographic Projections'] 135 | }, 136 | { 137 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 138 | name: 'Go-shp', 139 | en_name: 'Go-shp', 140 | description: 141 | '用于读写 ESRI Shapefiles 的 Go 库。基于 ESRI Shapefile 技术描述的纯 Go 实现。', 142 | en_description: 143 | 'Go library for reading and writing ESRI Shapefiles. Pure Golang implementation based on the ESRI Shapefile technical description.', 144 | site_url: 'https://github.com/jonas-p/go-shp', 145 | order: 66, 146 | tags: ['Go', 'ESRI Shapefiles', 'GIS'] 147 | }, 148 | { 149 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 150 | name: 'GoSpatial', 151 | en_name: 'GoSpatial', 152 | description: '用于操作地理空间数据的简单命令行界面程序。', 153 | en_description: 154 | 'GoSpatial is a simple command-line interface program for manipulating geospatial data.', 155 | site_url: 'https://github.com/jblindsay/go-spatial', 156 | order: 67, 157 | tags: ['Go', 'Geospatial Data', 'Command-line Tool'] 158 | }, 159 | { 160 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 161 | name: 'lidario', 162 | en_name: 'lidario', 163 | description: '用于读写 LiDAR(LAS)文件的小型 Go 库。', 164 | en_description: 165 | 'A small Go library for reading and writing LiDAR (LAS) files.', 166 | site_url: 'https://github.com/jblindsay/lidario', 167 | order: 68, 168 | tags: ['Go', 'LiDAR', 'LAS Files'] 169 | }, 170 | { 171 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 172 | name: 'orb', 173 | en_name: 'orb', 174 | description: 175 | '包 orb 定义了一组用于在 Golang 中处理 2D 地理和平面/投影几何数据的类型。', 176 | en_description: 177 | 'Package orb defines a set of types for working with 2d geo and planar/projected geometric data in Golang.', 178 | site_url: 'https://github.com/paulmach/orb', 179 | order: 69, 180 | tags: ['Golang', 'Geometric Data'] 181 | }, 182 | { 183 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lImyTYAmEoYAAAAAAAAAAAAADrZ5AQ/original', 184 | name: 'S2', 185 | en_name: 'S2', 186 | description: 187 | 'S2 是一个用于球面几何的库,旨在具有与最佳平面几何库相同的健壮性、灵活性和性能。', 188 | en_description: 189 | 'S2 is a library for spherical geometry that aims to have the same robustness, flexibility, and performance as the best planar geometry libraries.', 190 | site_url: 'https://github.com/golang/geo', 191 | order: 70, 192 | tags: ['Spherical Geometry', 'Golang', 'GIS'] 193 | } 194 | ] 195 | } 196 | -------------------------------------------------------------------------------- /src/data/sites/tech/groups/spatial_database.ts: -------------------------------------------------------------------------------- 1 | import { IGroup } from '../../../types' 2 | export const spatialDatabase: IGroup = { 3 | icon: 'icon-shujuyuanguanli', 4 | name: '空间数据库', 5 | en_name: ' Spatial Database', 6 | order: 1, 7 | children: [ 8 | { 9 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*gwoVRaoQDKcAAAAAAAAAAAAADrZ5AQ/original', 10 | name: 'DB2 Spatial Extender', 11 | en_name: 'DB2 Spatial Extender', 12 | description: 13 | '用于IBM DB2的扩展程序,用于生成和分析有关地理要素的空间信息,以及存储和管理基于此信息的数据。', 14 | en_description: 15 | 'An extender for IBM DB2 to generate and analyze spatial information about geographic features, and to store and manage the data on which this information is based.', 16 | site_url: 17 | 'https://www.ibm.com/support/knowledgecenter/SSEPGG_9.7.0/com.ibm.db2.luw.spatial.topics.doc/doc/db2sb03.html', 18 | order: 160, 19 | tags: [ 20 | 'IBM DB2', 21 | 'Spatial Extender', 22 | 'Geographic Features', 23 | 'Data Management' 24 | ] 25 | }, 26 | { 27 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*lvWgQa9WbVwAAAAAAAAAAAAADrZ5AQ/original', 28 | name: 'Esri Enterprise Geodatabase', 29 | en_name: 'Esri Enterprise Geodatabase', 30 | description: 31 | '它是对关系数据库引擎(如PostgreSQL)的补充。除了进行空间计算和应用拓扑规则之外,还添加了数据版本控制等功能。', 32 | en_description: 33 | "It's an addition to a relational database engine like PostgreSQL. Besides to make spatial calculations and apply topological rules, adds data version control, etc.", 34 | site_url: 35 | 'https://pro.arcgis.com/en/pro-app/help/data/geodatabases/overview/what-is-a-geodatabase-.htm', 36 | order: 161, 37 | tags: [ 38 | 'Esri', 39 | 'Geodatabase', 40 | 'Relational Database', 41 | 'Spatial Calculations' 42 | ] 43 | }, 44 | { 45 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*RCXNT6zlSGUAAAAAAAAAAAAADrZ5AQ/original', 46 | name: 'GeoMesa', 47 | en_name: 'GeoMesa', 48 | description: 49 | '一个构建在多个分布式云数据存储系统上的开源、分布式的时空数据库,包括Accumulo、HBase、Cassandra和Kafka。', 50 | en_description: 51 | 'An open-source, distributed, spatio-temporal database built on a number of distributed cloud data storage systems, including Accumulo, HBase, Cassandra, and Kafka.', 52 | site_url: 'http://www.geomesa.org/', 53 | order: 162, 54 | tags: [ 55 | 'Open Source', 56 | 'Distributed Database', 57 | 'Spatio-temporal Database', 58 | 'Cloud Data Storage' 59 | ] 60 | }, 61 | { 62 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*9Y_qQ4A502AAAAAAAAAAAAAADrZ5AQ/original', 63 | name: 'GeoPackage based on SQLite', 64 | en_name: 'GeoPackage based on SQLite', 65 | description: 66 | 'GeoPackage编码标准描述了在SQLite数据库中存储以下内容的一组约定。', 67 | en_description: 68 | 'The GeoPackage Encoding Standard describes a set of conventions for storing the following within an SQLite database.', 69 | site_url: 'https://www.geopackage.org/', 70 | order: 163, 71 | tags: ['GeoPackage', 'SQLite', 'Encoding Standard'] 72 | }, 73 | { 74 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*pHESQIfUEfkAAAAAAAAAAAAADrZ5AQ/original', 75 | name: 'GeoWave', 76 | en_name: 'GeoWave', 77 | description: 78 | '它在Accumulo、HBase、BigTable、Cassandra和DynamoDB之上提供地理空间和时间索引。', 79 | en_description: 80 | 'It provides geospatial and temporal indexing on top of Accumulo, HBase, BigTable, Cassandra, and DynamoDB.', 81 | site_url: 'https://locationtech.github.io/geowave/', 82 | order: 164, 83 | tags: [ 84 | 'Geospatial Indexing', 85 | 'Temporal Indexing', 86 | 'Distributed Databases' 87 | ] 88 | }, 89 | { 90 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*0Wu7SKAVHXIAAAAAAAAAAAAADrZ5AQ/original', 91 | name: 'H2GIS', 92 | en_name: 'H2GIS', 93 | description: 'H2数据库的空间扩展。', 94 | en_description: 'A spatial extension of the H2 database.', 95 | site_url: 'http://www.h2gis.org/', 96 | order: 165, 97 | tags: ['H2 Database', 'Spatial Extension'] 98 | }, 99 | { 100 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*AovwR7a7TqkAAAAAAAAAAAAADrZ5AQ/original', 101 | name: 'MBtiles', 102 | en_name: 'MBtiles', 103 | description: '用于在SQLite数据库中存储瓦片地图数据的规范。', 104 | en_description: 105 | 'A specification for storing tiled map data in SQLite databases.', 106 | site_url: 'https://github.com/mapbox/mbtiles-spec', 107 | order: 166, 108 | tags: ['Map Data', 'SQLite', 'Specification'] 109 | }, 110 | { 111 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*gWZuSoRycU8AAAAAAAAAAAAADrZ5AQ/original', 112 | name: 'mongoDB', 113 | en_name: 'mongoDB', 114 | description: '一种为开发和扩展而设计的开源文档数据库。', 115 | en_description: 116 | 'An open-source, document database designed for ease of development and scaling.', 117 | site_url: 'https://www.mongodb.org/', 118 | order: 167, 119 | tags: ['Open Source', 'Document Database', 'Development', 'Scaling'] 120 | }, 121 | { 122 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*y-ExSp5xVbkAAAAAAAAAAAAADrZ5AQ/original', 123 | name: 'MSSQL', 124 | en_name: 'MSSQL', 125 | description: '由Microsoft支持的高性能数据库。', 126 | en_description: 'A high-performance database supported by Microsoft.', 127 | site_url: 128 | 'https://www.microsoft.com/en-us/server-cloud/products/sql-server/', 129 | order: 168, 130 | tags: ['Microsoft', 'High-performance Database'] 131 | }, 132 | { 133 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*HLQ-QaqPOgUAAAAAAAAAAAAADrZ5AQ/original', 134 | name: 'MySQL', 135 | en_name: 'MySQL', 136 | description: '全球最流行的开源数据库。', 137 | en_description: "The world's most popular open source database.", 138 | site_url: 'https://www.mysql.com/', 139 | order: 169, 140 | tags: ['Open Source', 'Database'] 141 | }, 142 | { 143 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*ATrwSazyj8AAAAAAAAAAAAAADrZ5AQ/original', 144 | name: 'Omnisci', 145 | en_name: 'Omnisci', 146 | description: '利用GPU的并行处理能力查询数十亿行的SQL引擎。', 147 | en_description: 148 | 'SQL engine that leverages the parallel processing power of GPUs to query billions of rows in milliseconds.', 149 | site_url: 'https://www.omnisci.com/', 150 | order: 170, 151 | tags: ['SQL Engine', 'GPU', 'Parallel Processing'] 152 | }, 153 | { 154 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*bQAYTp-a28EAAAAAAAAAAAAADrZ5AQ/original', 155 | name: 'Oracle Spatial', 156 | en_name: 'Oracle Spatial', 157 | description: '基于Oracle的先进空间数据分析。', 158 | en_description: 'Oracle-based advanced spatial data analysis.', 159 | site_url: 160 | 'http://www.oracle.com/us/products/database/options/spatial/overview/index.html', 161 | order: 171, 162 | tags: ['Oracle', 'Spatial Data Analysis'] 163 | }, 164 | { 165 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*dTfASINHNyEAAAAAAAAAAAAADrZ5AQ/original', 166 | name: 'PostGIS based on PostgreSQL', 167 | en_name: 'PostGIS based on PostgreSQL', 168 | description: '最先进的开源数据库。', 169 | en_description: 'Most advanced open source database.', 170 | site_url: 'http://postgis.net/', 171 | order: 172, 172 | tags: ['PostGIS', 'PostgreSQL', 'Open Source Database'] 173 | }, 174 | { 175 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*MtTvSYNbIzsAAAAAAAAAAAAADrZ5AQ/original', 176 | name: 'Spatialite based on SQLite', 177 | en_name: 'Spatialite based on SQLite', 178 | description: '轻量级SQL库,支持完全的空间能力。', 179 | en_description: 180 | 'Lightweight SQL library to support fully spatially capability.', 181 | site_url: 'https://www.gaia-gis.it/fossil/libspatialite/index', 182 | order: 173, 183 | tags: ['Spatialite', 'SQLite', 'SQL Library', 'Spatial Capability'] 184 | }, 185 | { 186 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*Xg5fSoGXOxgAAAAAAAAAAAAADrZ5AQ/original', 187 | name: 'Tile38', 188 | en_name: 'Tile38', 189 | description: 'Tile38是一个地理空间数据库、空间索引和实时地理围栏。', 190 | en_description: 191 | 'Tile38 is a geospatial database, spatial index, and realtime geofence.', 192 | site_url: 'https://github.com/tidwall/tile38', 193 | order: 174, 194 | tags: ['Geospatial Database', 'Spatial Index', 'Realtime Geofence'] 195 | }, 196 | { 197 | icon: 'https://mdn.alipayobjects.com/huamei_b5qxsh/afts/img/A*pIszS5W0Jg0AAAAAAAAAAAAADrZ5AQ/original', 198 | name: 'TimescaleDB', 199 | en_name: 'TimescaleDB', 200 | description: 201 | '一种开源的时间序列SQL数据库,针对快速摄入和复杂查询进行了优化。', 202 | en_description: 203 | 'An open-source time-series SQL database optimized for fast ingest and complex queries.', 204 | site_url: 'https://www.timescale.com/', 205 | order: 44, 206 | tags: ['Time Series', 'SQL Database', 'Open Source'] 207 | } 208 | ] 209 | } 210 | --------------------------------------------------------------------------------