My software projects

C++ BLAS GDAL libcurl BOOST wxWidgets Crossplatform

GeoDa

I am (currently) the developer and architect of GeoDa software. GeoDa is a cross-platform desktop software that serves as an introduction to spatial data analysis. The program provides a user-friendly and graphical interface to methods of exploratory spatial data analysis (ESDA), such as spatial autocorrelation statistics for aggregate data (several thousand records), and basic spatial regression analysis. GeoDa's worldwide user numbers is over 310,000 (August 2019). This includes lab users at universities such as Harvard, MIT, and Cornell.

C++ WebAssembly Javascript Mapbox.gl deck.gl Covid-19

US Covid Atlas

I am the author and one of the three leaders of the US Covid Atlas project. The US Covid atlas is a web app for county-level COVID-19 estimates, longitudinal exploration, and statistical cluster detection. It reveals a more detailed pandemic landscape with local hotspots of surging COVID cases that are missed by state-level data. The core spatial analysis functions were written in C++ to power this app using WebAssembly. Combining with Mapbox.gl and deck.gl for web UI, the whole system can be running in morden (desktop and mobile) browser as a static website serving thousands users per day with a fraction cost of traditional server biased webGIS system. All media coverage are here: https://geodacenter.github.io/covid/contact.html

Python C++ SWIG

Pygeoda

I am the author and leader of the pygeoda project. Pygeoda is a python library for spatial data analysis based on GeoDa and libgeoda, which is a C++ library designed for programmers to do spatial data analysis using their favoriate programming languages. SWIG is used to wrapper the C++ library for building the pygeoda package, which is aimed to be easily integratd with other libraries, softwares or systems on different platforms.

R C++ RCPP

rgeoda

I am the author and leader of the rgeoda project. rgeoda is a R package for spatial data analysis based on libgeoda and GeoDa. It provides spatial data analysis functionalities including Exploratory Spatial Data Analysis, Spatial Cluster Detection and Clustering Analysis, Regionalization, etc. based on the C++ source code of GeoDa, which is an open-source software tool that serves as an introduction to spatial data analysis.

Python PySAL wxPython C++

CAST

I am the creator of CAST (Crime Analytics for Space and Time), which is an open-source software for analyzing crime events in a space-time framework. It is written in Python and C++. It has been assessed by the RAND Corporation: no known program offers the capabilities in CAST with a greater emphasis on temporal trends, crime analysts may find this geospatial software tool a valuable addition to their toolkits.

JavaScript Node.js

Mac-Dependencies

I am the author of Mac-dependencies, which is a node.js module to "walk" dependencies of an executable or dylib on Mac. It will automatically resolve the @executable_path, @rpath and @loader_path paths to find dependent libraries.

Java JavaSwing

Xelerator

I am the author of Xelarator, which is a Telnet application for UNIX/Linux engineers. It is a small tool to automate Unix/Linux shell scripting work. Xelerator is a compact application that allows users to automatically execute and record UNIX shell scripts in multi-terminal consoles. It features an easy to use interface and aims to help engineers improve their work flow when running scripts. Xelerator has been added to Softpedia.com (1,754 downloads). http://www.softpedia.com/get/Network-Tools/Telnet-SSH-Clients/Xelerator.shtml

My reserch projects:

GeoDaWeb

I am the creator of GeoDa-Web, which is a cloud mapping platform that integrates spatial analytics and web mapping. The platform enables researchers to retrieve spatial data from the cloud, conduct spatial analysis in the cloud, visualize results using cloud mapping, and publish maps and plots to social media in a user-friendly way. It leverages the code base from the widely used GeoDa desktop software for spatial data exploration and the PySAL Python library of spatial analytical functions. We outline the architecture, discuss the implementation and illustrate the functionality of GeoDa-Web. Check the demo: https://youtu.be/zJvOmm_4oGY

Python Django Apache C++ Postgresql PostGIS GeoDa CentOS
CyberGIS WebMapping ESDA CloudMapping GeoCloud

Video Search

Research on semantic video segmentation, video metadata and content-based video ranking and presentation in video search. Develop a content-based video search engine; develop a novel web-based interactive hierarchical representation system of video content for this video search engine (demonstrated at Microsoft Research Techfest 2006 in Seattle)

C# Asp.net SQLServer IIS
VideoMetaData Content-based-video-ranking Content-based-video-presentation SematicVideoSegmentation

Machine Learning Movement

I developed a novel scheme for automatically deriving synthetic walking (locomotion) and movement (steering and avoidance) behavior in simulation from simple trajectory samples. I use a combination of observed and recorded real‐world movement trajectory samples in conjunction with synthetic, agent‐generated, movement as inputs to a machine‐learning scheme. The potential broader applications of the scheme are numerous and include the design and delivery of location‐based services, evaluation of architectures for mobile communications technologies, what‐if experimentation in agent‐based models with hypotheses that are informed or translated from data, and the construction of algorithms for extracting and annotating space‐time paths in massive data‐sets.

C++ OpenGL
MachineLearning Agent-based-model Trajectory Geosimulation

A MapReduce algorithm to create contiguity weights for spatial analysis of big data

I developed a MapReduce algorithm for creating contiguity-based spatial weights for big geospatial data. This algorithm provides the ability to create spatial weights from very large spatial datasets efficiently by using computing resources that are organized in the Hadoop framework. It works in the paradigm of MapReduce: mappers are distributed in computing clusters to find contiguous neighbors in parallel, then reducers collect the results and generate the weights matrix.

Python MapReduce Hadoop AWS EMR
BigData

Mining travel patterns from photos

By utilizing large amount of crowd volunteered geo-tagged photos, existing research can successfully discover landmarks or attractive areas, mine travel patterns, find classical travel routes and recommend travel destinations or routes for inexperienced tourists. By integrating new techniques in data mining and operational research, we develop a novel travel planning system to design multi-day and multi-stay travel plans based on geo-tagged photos. Specifically, a modified Iterated Local Search heuristic algorithm is developed to find an approximate optimal solution for the multi-day and multi-stay travel planning problem using points of interests (POIs) and recurrence weights between POIs in a travel graph model, which are discovered from photos

C++ pgRouting OSM Python HDBSCAN SIFT
DataMining CrowdSourcing Geotagged TravelPlanning